C# 将项目添加到匿名列表

C# 将项目添加到匿名列表,c#,anonymous-types,C#,Anonymous Types,我有一个匿名类型的列表 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}); //E

我有一个匿名类型的列表

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 });

但同样的错误再次出现。

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

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

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

您的产品实体中有哪些类型的ProductId和Priority?那么所有这些都可以正常工作。确保您使用的属性名称完全相同,并且顺序相同。无法从“AnonymousType#2”转换为“AnonymousType#1”@Stormenet不,他不需要。您正在使用的属性的名称将用作匿名类型的名称property@liaqatali是的,那是你的问题。您应该使用
Priority=(short)0