按时间排序 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】:

简单地说,OrderByTimeOfDay

var list = dateList.OrderBy(x => x.TimeOfDay).ToList(); 
// ToList added in response to comment.

【讨论】:

当我使用您的方法时,我收到此错误:“无法将类型 'System.Linq.IOrderedEnumerable' 隐式转换为 'System.Collections.Generic.List' . 存在显式转换(您是否缺少演员表?)“代码:时间是 List: Times = Times.OrderBy(x => x.TimeOfDay); @user2138160 在末尾添加ToList 调用。我会更新我的答案。【参考方案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) =&gt; a.CompareTo(b));list 变量在哪里。

【讨论】:

以上是关于按时间排序 DateTime 列表的主要内容,如果未能解决你的问题,请参考以下文章

在Python 3.4中按日期对字典列表进行排序[重复]

C# DateTime OrderBy 当列表包含一些相同的 DateTime 值时

按python3中的datetime排序

如何按值的 DateTime 属性对字典进行排序

存储和排序同时具有 DateTime 和 Int 值的人员列表

如何根据 dateTIme 和 TimeOfDay 对颤振/飞镖中的列表项进行排序?