如何使用动态对象对列表进行排序

时间:2011-12-06 17:35:25

标签: c# linq

我有一个包含动态类型对象的列表。当我使用LINQ OrderBy方法时,我收到一条错误,指出'object'不包含'Date'的定义。如何按日期对列表进行排序?

List<dynamic> employees = new List<dynamic>();

employees.Add(new
{
    ID = 1,
    Name = "Larry",
    Date = new DateTime(2010, 10, 1),
});

employees.Add(new
{
    ID = 2,
    Name = "Clint",
    Date = new DateTime(2011, 5, 28),
});

employees.Add(new
{
    ID = 3,
    Name = "Jason",
    Date = new DateTime(2011, 7, 6),
});

var query = employees.OrderBy(x => x.Date);

2 个答案:

答案 0 :(得分:6)

您在同一个程序集中显示的代码是什么?

匿名类型不能在程序集之间工作,“对象不包含此定义”错误是使用来自两个不同程序集的匿名类型的典型标志

(例如,在ASP.net MVC页面中,Controller可能会将匿名类型作为模型返回,并且View可能会尝试使用它=&gt;爆炸时会出现错误的错误)

答案 1 :(得分:3)

我确认您的查询在.NET 4.0中有效。您是否错过了程序集中对Microsoft.CSharp的引用?