【问题标题】:Sort List<DateTime> Descending排序列表<日期时间>降序
【发布时间】:2010-09-19 15:25:25
【问题描述】:

在 c#(3.0 或 3.5,所以我们可以使用 lambdas)中,有没有一种优雅的方法可以按降序对日期列表进行排序?我知道我可以做一个直接排序,然后把整个事情反过来,

docs.Sort((x, y) => x.StoredDate.CompareTo(y.StoredDate));
docs.Reverse();

但是有一个 lambda 表达式可以一步完成吗?

在上面的示例中,StoredDate 是一个类型为 DateTime 的属性。

【问题讨论】:

    标签: c# sorting lambda


    【解决方案1】:

    虽然它未经测试...

    docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate));
    

    应该和你原来的相反。

    【讨论】:

      【解决方案2】:

      怎么了:

      docs.OrderByDescending(d => d.StoredDate);
      

      【讨论】:

      • 请注意,这会创建一个新的有序列表,而不是在原地修改列表。当然,性能损失可以忽略不计。
      • 除了 Cavyn 所说的,这将始终返回 IOrderedEnumerable 列表,需要使用 .ToList() 将其转换回通用列表。
      【解决方案3】:
      docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate));
      

      应该做你正在寻找的东西。

      【讨论】:

        【解决方案4】:
        docs.Sort((x, y) => -x.StoredDate.CompareTo(y.StoredDate));
        

        注意减号。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多