Linq to sql:按datetime desc排序,然后按数据asc的时间排序?

问题描述:

这是一个快速的。
在LINQ to sql中,我需要通过一个日期时间字段来降序,然后按相同日期时间部分的顺序递增递增,有道理吗?下面是所需要的结果的一个例子:

[串行] [日期(MM-DD-YYYY:HH-MM-SS)]
1 2008年3月13日:02年10月10日
2月3日至13日-2008:60年10月12日
3 2008年3月12日:55年12月5日


Linq to sql:按datetime desc排序,然后按数据asc的时间排序?

我想:

return query.OrderByDescending(c=> c.Time).ThenBy(c=> c.Time.TimeOfDay); 


和ALS Ø尝试:

query.OrderByDescending(c => c.Time).ThenBy(c => c.Time.Hour).ThenBy(c=> c.Time.Minute).ThenBy(c=> c.Time.Second); 


,但似乎从来没有工作。 有什么建议吗?

使用DateTimeOfDay属性进行排序。

return query 
    .OrderByDescending(c=> c.Time.Date) 
    .ThenBy(c=> c.Time.TimeOfDay); 
+1

噢耶同时回答再次 – thmshd 2011-03-28 20:47:49

+0

第一工作答案!优胜者!谢谢你,兄弟。 – Galilyou 2011-03-28 21:10:41

问题是“时间”包含日期和时间信息,因此,已经完全排序。你将不得不采取日期部分先排序。

return query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay); 

没有测试:)

我觉得首先orderByDescending排序按日期时间(日期+时间)的一切,所以只有当你有相同的时间戳的任何记录以下orderbys生效。

试试这个

query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay) 

把它转化为蜱也能发挥作用:

return query.OrderByDescending(c=> c.Time.Ticks)