如何用动态对象排序列表

本文关键字:排序 列表 对象 动态 何用 | 更新日期: 2023-09-27 18:17:09

我有一个包含动态类型对象的列表。当我使用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);

如何用动态对象排序列表

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

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

(如。例如,在ASP.net MVC页面中,控制器可能会返回一个匿名类型作为模型,而视图可能会尝试使用它=>爆炸,正是这个错误)

我验证了您的查询在。net 4.0中工作。你的汇编中是否缺少对Microsoft.CSharp的引用?