向匿名列表中添加项

23

我有一个匿名类型列表

var myList = db.Products.Select(a => new {a.ProductName, a.ProductId, 
a.Priority}).ToList();

我想在这个列表中添加另一项,如下所示:

myList.Insert(0, new { "--All--", 0, 0}); //Error: Has some invalid arguments

我也尝试过

myList.Add(new { "--All--", 0, 0}); //Error: Has some invalid arguments

我该怎么做?

编辑:

在第一个回答后,我进行了如下操作

var packageList = db.Products.Select(a => new { 
         a.ProductName, a.ProductId, a.Priority }).ToList();

packageList.Insert(0, new { ProductName = "All", ProductId = 0, Priority = 0 });

但是仍然出现了相同的错误。

1个回答

46

您应该指定创建的匿名对象的属性名称:

myList.Insert(0, new { ProductName = "--All--", ProductId = 0, Priority = 0});

记住 - 您应该列出所有匿名类型的属性(名称应相同),它们应按相同顺序使用,并且它们应具有完全相同的类型。否则将创建不同匿名类型的对象。


你的产品实体中,ProductId和Priority是什么类型? - Sergey Berezovskiy
然后一切都应该正常工作。确保您使用的是完全相同的属性名称并且顺序也相同。 - Sergey Berezovskiy
无法将“AnonymousType#2”转换为“AnonymousType#1”。 - Lali
1
@Stormenet 不需要,你正在使用的属性名称将作为匿名类型属性的名称。 - Sergey Berezovskiy
2
@liaqatali 是的,那就是你的问题。你应该使用 Priority =(short)0 - Sergey Berezovskiy
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接