我有一个对象列表:List<FakeObject> list = ...
每个对象都有一个 DateTime 属性,我们称它为“日期”
我想按这个日期属性降序排列这个列表。然而,当我尝试
list.Sort(new Comparison<FakeObject>((x, y) => DateTime.Compare(x.Date, y.Date)))
它提示是因为 Date 属性可以为空。
我如何对这个列表进行排序,它将可为空的日期视为最大日期,以便它出现在顶部?对我来说,快速简便的替代方法是不使日期字段可为空,但我们假设现在这不是一个选项。
简而言之:如果 DateTime 可以为 null,我如何按 DateTime 对对象列表进行排序?
最佳答案
一种可能的方法是:
list.Sort(new Comparison<FakeObject>((x, y) =>
-DateTime.Compare(x.Date ?? DateTime.MaxValue,
y.Date ?? DateTime.MaxValue)));
更新:在 OP 编辑问题以进行澄清后修改为使用 MaxDate
。
请注意,您可以通过任何一种方式(MinDate
或 MaxDate
)执行此操作。底线是这样的,如果它是 null
然后给它一些静态值来完成你想要的。
关于C#:按可为空的 DateTime 属性对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733227/