在C#中,按DateTime排序的最佳方法是什么?并在最后有空的?

时间:2013-05-28 02:26:29

标签: c# datetime collections

我有一组DateTime?个对象,我想对它们进行排序以在网页上呈现它们。问题是没有价值的那些似乎出现在列表的顶部,我希望它们显示在底部。

DateTime?数组进行排序的最佳方法是将底部显示没有设置值的项目。

所以不要这样:

  1. [没有价值]
  2. 2013年1月1日
  3. 2013年1月15日
  4. 我想要这个:

    1. 2013年1月1日
    2. 2013年1月15日
    3. [没有价值]

2 个答案:

答案 0 :(得分:10)

您应该能够使用空合并运算符。例如:

var orderedDates = nullableDates.OrderBy(date => date ?? DateTime.MaxValue);

这将替换任何缺失(null)日期的最大值,将这些日期推送到排序序列的末尾。如果此日期可能是对象的一部分,您当然可以使用它来按对象的日期属性对序列进行排序。

var orderedFoos = foos.OrderBy(foo => foo.SomeDate ?? DateTime.MaxValue);

答案 1 :(得分:0)

var ordered = dates.OrderBy(x => x ?? DateTime.MaxValue);