我有一個日期時間列表,如果可能的話,我想使用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
我有一個日期時間列表,如果可能的話,我想使用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
簡單,OrderBy
的TimeOfDay
:
var list = dateList.OrderBy(x => x.TimeOfDay).ToList();
// ToList added in response to comment.
雖然我的解決方案確實有效,但這個更好。 –
+1優雅。你是如此接近10K :) –
當我使用你的方法時,我得到這個錯誤:「不能隱式轉換類型'System.Linq.IOrderedEnumerable
var result=dates.OrderBy(d=>d-d.Date);
以上方法僅當人L上的日期是相同的,萬一日期也不同,你應該做到以下幾點...
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解決方案實際上是唯一對我有用的工作。其他的沒有很好的排序日期時間我添加了.last()用於獲取最早的更新,並且當其他人不用時它工作得很好。 – Zwan
使用此解決方案
list<DateTime> YourList=new list<DateTime>();
.
.
.
YourList.OrderByDescending(x=>x.Date).ThenByDescending(x=>x.TimeOfDay).ToList()
list.Sort((a, b) => a.CompareTo(b));
凡列表是你數組變量。
對於未來的帖子,請儘量避免標題中的標籤和各種「感謝信」。隨意討論[meta](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts) –
奇怪的是,在這個問題與本頁面上的問題相同:http://www.dotnetperls.com/sort-datetime –