按对象列表的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的人将被剔除。
提前感谢:)
首先,如果您想支持null
,则应该使用DateTime?
而不是DateTime
。我怀疑你真正的代码不是你给我们看的,因为它不会像前面提到的那样"按字母数字"排序。
但是,如果您使用Nullable<DateTime>
(也要注意ToList
),这应该可以工作:
persons = persons
.Where(p => p.birthdate.HasValue)
.OrderBy(p => p.birthdate.Value)
.ToList();
第二,"这个列表已经经过了一些特殊的分类,你不必关心。只要记住,当前的秩序应该保持。"
如果我们不知道它是如何订购的,我们应该如何向您展示保持当前订单的方法?