按时间排序日期时间列表

use*_*160 13 c# sorting lambda datetime list

我有一个日期时间列表,如果可能的话我想使用lambda表达式对其进行排序.

我的列表:

6/19/1979 8:00:00 AM
5/5/1980 7:00:00 PM
10/20/1982 5:00:00 PM
1/4/1984 6:00:00 AM
Run Code Online (Sandbox Code Playgroud)

输出应按此顺序排列:

1/4/1984 6:00:00 AM 
6/19/1979 8:00:00 AM
10/20/1982 5:00:00 PM
5/5/1980 7:00:00 PM
Run Code Online (Sandbox Code Playgroud)

Sim*_*ead 40

简单地说,OrderByTimeOfDay:

var list = dateList.OrderBy(x => x.TimeOfDay).ToList(); 
// ToList added in response to comment.
Run Code Online (Sandbox Code Playgroud)


sus*_*ant 5

只有在所有日期都相同的情况下才能使用以上内容,如果日期也不同,您应该执行以下操作...

var sortedDates = dates.OrderByDescending(x => x);
Run Code Online (Sandbox Code Playgroud)

或者不想使用,或者不知道Linq然后你可以去追随..

static List SortAscending(List list)
{
list.Sort((a, b) => a.CompareTo(b));
return list;
}

static List SortDescending(List list)
{
list.Sort((a, b) => b.CompareTo(a));
return list;
}
Run Code Online (Sandbox Code Playgroud)

  • 这个linq解决方案实际上是唯一对我有用的.另一个没有很好地排序Datetime我添加了.last()来获得最旧的更新,当其他没有时它运行良好. (2认同)