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

leo*_*ora 1 c# collections datetime

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

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

所以不是这样的:

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

我要这个:

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

Ant*_*ram 10

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

var orderedDates = nullableDates.OrderBy(date => date ?? DateTime.MaxValue);
Run Code Online (Sandbox Code Playgroud)

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

var orderedFoos = foos.OrderBy(foo => foo.SomeDate ?? DateTime.MaxValue);
Run Code Online (Sandbox Code Playgroud)