【问题标题】:Add item to an anonymous list将项目添加到匿名列表
【发布时间】:2014-05-14 10:26:42
【问题描述】:

我有一个匿名类型的列表

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

但又出现同样的错误。

【问题讨论】:

    标签: c# anonymous-types


    【解决方案1】:

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

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

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

    【讨论】:

    • ProductId 和 Priority 在您的 Product 实体中有哪些类型?
    • 那么一切正常。确保您使用完全相同的属性名称和顺序
    • 无法从“AnonymousType#2”转换为“AnonymousType#1”
    • @Stormenet 不,他不需要。您正在使用的属性名称将用作匿名类型属性的名称
    • @liaqatali 是的,那是你的问题。你应该使用Priority =(short)0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2019-11-29
    • 2017-09-19
    相关资源
    最近更新 更多