排序列表<DateTime>降序

Chr*_*way 44 c# sorting lambda

在c#(3.0或3.5,所以我们可以使用lambdas),是否有一种优雅的方式按降序排序日期列表?我知道我可以直接排序,然后扭转整个事情,

docs.Sort((x, y) => x.StoredDate.CompareTo(y.StoredDate));
docs.Reverse();
Run Code Online (Sandbox Code Playgroud)

但是有一个lambda表达式可以一步到位吗?

在上面的示例中,StoredDate是一个类型为DateTime的属性.

Aus*_*nen 77

虽然没有经过测试......

docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate));
Run Code Online (Sandbox Code Playgroud)

应该与你原来的相反.


Sco*_*ker 61

有什么不对:

docs.OrderByDescending(d => d.StoredDate);
Run Code Online (Sandbox Code Playgroud)

  • 除了Cavyn所说的,这将始终返回IOrderedEnumerable <T>的列表,需要使用.ToList <T>()将其转换回通用列表. (5认同)
  • 请注意,这会创建一个新的有序列表,而不是在适当的位置修改列表.当然,性能损失可以忽略不计. (4认同)

jon*_*nii 20

docs.Sort((x, y) => y.StoredDate.CompareTo(x.StoredDate));
Run Code Online (Sandbox Code Playgroud)

应该做你想要的.


Tam*_*ege 6

docs.Sort((x, y) => -x.StoredDate.CompareTo(y.StoredDate));
Run Code Online (Sandbox Code Playgroud)

注意减号.