【发布时间】:2017-10-13 16:56:03
【问题描述】:
我有一个简单的 linq 查询,它根据 dateTime 降序和升序对记录进行排序。由于某种原因,它在 13:00:00 时失败了。
sortedrecords = sortedrecords.OrderByDescending(x => x.DateTime).ThenBy(x=>x.Time);
它应该对 2PM、1PM、12PM 进行排序。但是下午 1 点的记录出现在最后。
我的查询有问题吗?任何建议都会有所帮助。
谢谢
降序排列(失败)
2017 年 10 月 12 日下午 2:00:56
2017 年 10 月 12 日下午 2:00:50
2017 年 10 月 12 日下午 12:29:41
2017 年 10 月 12 日下午 12:28:32
2017 年 10 月 12 日下午 12:27:35
2017 年 10 月 12 日上午 11:21:35
2017 年 10 月 12 日上午 11:14:16
2017 年 10 月 12 日下午 1:49:28
2017 年 10 月 12 日下午 1:43:23
升序排列(正确)
2017 年 10 月 12 日下午 12:27:35
2017 年 10 月 12 日下午 12:28:32
2017 年 10 月 12 日下午 12:29:41
2017 年 10 月 12 日下午 1:43:23
2017 年 10 月 12 日下午 1:49:28
2017 年 10 月 12 日下午 2:00:50
2017 年 10 月 12 日下午 2:00:56
【问题讨论】:
-
您的
x.DateTime和x.Time属性是什么?请展示sortedrecords对象的类是什么样的。 -
试试
OrderByDescending(x => x.DateTime.Date).ThenBy(x=>x.Time); -
其实你应该检查
DateTime.Ticks属性。您是否使用具有不同 TimeZone 规范的 DateTime?如果不涉及时区,那么一个简单的解决方法是使用DateTime.Ticks进行排序 -
@SantoshKumar 在这里没有部分回答问题我建议您编辑您的原始帖子以显示
sortedrecords对象的类的样子。 -
yes it is stringDateTime 类型。它只需要在呈现给用户时是一个字符串(如在表单或网页中)。我希望它们也不会作为字符串保存在数据存储中......
标签: c# .net linq sorting datetime