按照它的DateTime属性排序对象列表

时间:2014-07-31 08:13:00

标签: c# linq sorting datetime lambda

想象一下下课:

Class Person {
  DateTime birthdate;
}

我有一个包含一些Person-objects的列表:

List<Person> persons;

此列表已经通过一些特殊的类别,关于你不必关心。 请记住,应该保留当前的顺序。

现在列表应按生日值升序排序。 生日也可能是NULL!

我确实使用过以下内容,但我最终得到的是字母数字,而不是从最新日期到最早的日期:

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

我意识到这样一个事实,即那些因出生日期而获得NULL的人将被退出。 这没关系。

提前致谢:)

1 个答案:

答案 0 :(得分:2)

首先,如果您想支持DateTime?,则应使用DateTime代替null。我怀疑你的真实代码并不是你向我们展示的,因为它不会被命令&#34;字母数字&#34;如上所述。

但是,如果您使用Nullable<DateTime>(也请注意ToList),这应该有用:

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

其次,&#34;这个列表已经通过了一些特殊的排序,关于你不必关心。请记住,应该保留当前的订单。&#34;

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