2011-02-09 155 views
5

可能我所問的很簡單,但我似乎沒有得到這一個。 我有一個包含日期字段和時間字段的元素列表。 Date字段是常規的DateTime,Time字段是字符串。 時間格式爲HH:mm,範圍在24h。按日期和時間排序的訂單(字符串格式)

通過做List.OrderBy(e => e.Date)來按日期排列我的列表非常簡單,但我似乎無法以後按順序排序,因此記錄的順序依賴於日期和時間。

我試了一下,但它可能是一個很大的錯誤!

List = List.OrderBy(e => e.EstimatedDate).OrderBy(e => new TimeSpan(int.Parse(e.EstimatedTime.Substring(0,e.EstimatedTime.LastIndexOf(":"))),int.Parse(e.EstimatedTime.Substring(e.EstimatedTime.LastIndexOf(":")+1)),0).TotalMinutes); 

我希望有人能幫助我解決這個問題。

回答

10

你想OrderBy(...).ThenBy(...);也 - 不,如果時間是在HH:mm你沒有對它進行解析 - 你可以排序它字母順序排列,即

List = List.OrderBy(e => e.EstimatedDate).ThenBy(e => e.EstimatedTime).ToList(); 

或通過LINQ:

List = (from e in List 
     orderby e.EstimatedDate, e.EstimatedTime 
     select e).ToList(); 
+1

我知道這應該相當簡單,今天我真的很困。你是第一個回答,我發現你的答案很好,所以你可以得到答案。感謝所有幫助過我的人。 – Hallaghan 2011-02-09 11:03:40

4

爲什麼不嘗試類似如下:

List.OrderBy(e => e.Date).ThenBy(e => DateTime.Parse(e.Time)); 
// May need to change DateTime.Parse(e.Time) with appropriate conversion code 
2

你知道ThenBy()?

List = List.OrderBy(DATE).ThenBy(Time) 
相關問題