按时间排序 DateTime 列表
Posted
技术标签:
【中文标题】按时间排序 DateTime 列表【英文标题】:Sort DateTime List by Time 【发布时间】:2013-08-06 21:20:45 【问题描述】:我有一个日期时间列表,如果可能,我想使用 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
输出应该是这个顺序:
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
【问题讨论】:
对于以后的帖子,请尽量避免标题中的标签和各种“感谢信”。欢迎在meta 上讨论 奇怪的是这个问题中使用的日期和这个页面上的相同:dotnetperls.com/sort-datetime 【参考方案1】:简单地说,OrderBy
TimeOfDay
:
var list = dateList.OrderBy(x => x.TimeOfDay).ToList();
// ToList added in response to comment.
【讨论】:
当我使用您的方法时,我收到此错误:“无法将类型 'System.Linq.IOrderedEnumerableToList
调用。我会更新我的答案。【参考方案2】:
只有当所有日期都相同时,以上才有效,如果日期也不同,您应该执行以下操作...
var sortedDates = dates.OrderByDescending(x => x);
否则不想用,或者不知道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;
【讨论】:
请注意,OP 发布的示例数据忽略了日期,而是考虑了时间。 这个 linq 解决方案实际上是唯一对我有用的解决方案。另一个没有很好地排序 Datetime 我添加了 .last() 以获取最旧的更新,当其他没有时它运行良好。跨度> 【参考方案3】:var result=dates.OrderBy(d=>d-d.Date);
【讨论】:
【参考方案4】:使用这个解决方案
list<DateTime> YourList=new list<DateTime> ();
.
.
.
YourList.OrderByDescending(x=>x.Date).ThenByDescending(x=>x.TimeOfDay).ToList()
【讨论】:
【参考方案5】:list.Sort((a, b) => a.CompareTo(b));
list 变量在哪里。
【讨论】:
以上是关于按时间排序 DateTime 列表的主要内容,如果未能解决你的问题,请参考以下文章
C# DateTime OrderBy 当列表包含一些相同的 DateTime 值时