2011-03-28 96 views
16

這是一個快速的。
在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); 


,但似乎從來沒有工作。 有什麼建議嗎?

回答

48

使用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

14

問題是「時間」包含日期和時間信息,因此,已經完全排序。你將不得不採取日期部分先排序。

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

沒有測試:)

2

我覺得首先orderByDescending排序按日期時間(日期+時間)的一切,所以只有當你有相同的時間戳的任何記錄以下orderbys生效。

試試這個

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

把它轉化爲蜱也能發揮作用:

return query.OrderByDescending(c=> c.Time.Ticks) 
相關問題