2013-08-06 3 views
9

私はdatetimeリストを持っています。可能であればラムダ式を使ってソートしたいと思います。日時を並べ替える

マイリスト:

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 
+0

今後の投稿では、タイトルとすべての種類の「ありがとうございます」のタグは避けてください。 [meta](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)についてお気軽にご相談ください –

+0

この質問はこのページのものと同じです:http://www.dotnetperls.com/sort-datetime –

答えて

30

OrderByTimeOfDay

var list = dateList.OrderBy(x => x.TimeOfDay).ToList(); 
// ToList added in response to comment. 
+1

私の解決策はうまくいきますが、これは優れています。 –

+0

+1すてきでエレガントです。あなたは10Kにとても近づいています:) –

+1

私はあなたのメソッドを使用するとき、私はこのエラーが発生します: "暗黙のうちにタイプ 'System.Linq.IOrderedEnumerable 'を 'System.Collections.Generic.List :Times = Times.OrderBy(x => x.TimeOfDay); DateTime> – user2138160

0
var result=dates.OrderBy(d=>d-d.Date); 
3

上記の場合にのみ動作しますアル日付はまた、あなたが次のことを行う必要があります異なる場合には、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; 
} 
+0

営業担当者が投稿したサンプルデータは、時間を無視して無視されることに注意してください。 –

+2

このlinqソリューションは、実際には私にとって唯一の仕事です。他のものはうまくソートされません。日時。私は.last()を追加して最も古いアップデートを取得しました。 – Zwan

0

使用リストには、変数をリストであり、このソリューション

list<DateTime> YourList=new list<DateTime>(); 
. 
. 
. 
YourList.OrderByDescending(x=>x.Date).ThenByDescending(x=>x.TimeOfDay).ToList() 
0

list.Sort((a, b) => a.CompareTo(b));