按对象列表的DateTime属性排序

本文关键字:属性 排序 DateTime 对象 列表 | 更新日期: 2023-09-27 18:15:41

想象下面的类:

Class Person {
  DateTime birthdate;
}

我有一个Person-objects的列表:

List<Person> persons;

这个列表已经经过了一些特殊的分类,你不必关心。请记住,应保持当前的顺序。

现在列表应该按照出生日期升序排序。出生日期也可以为NULL!

我确实使用了以下方法,但我最终得到的是字母数字排序,而不是从最新日期到最旧日期:

persons = persons.Where(p => p.birthdate != null).OrderBy(p => p.birthdate).ToList();

我知道这样一个事实,即出生日期为NULL的人将被剔除。

提前感谢:)

按对象列表的DateTime属性排序

首先,如果您想支持null,则应该使用DateTime?而不是DateTime。我怀疑你真正的代码不是你给我们看的,因为它不会像前面提到的那样"按字母数字"排序。

但是,如果您使用Nullable<DateTime>(也要注意ToList),这应该可以工作:

persons = persons
    .Where(p => p.birthdate.HasValue)
    .OrderBy(p => p.birthdate.Value)
    .ToList();

第二,"这个列表已经经过了一些特殊的分类,你不必关心。只要记住,当前的秩序应该保持。"

如果我们不知道它是如何订购的,我们应该如何向您展示保持当前订单的方法?