2013-08-06 23 views
9

Bir datetime listesi var ve mümkünse bir lambda ifadesi kullanarak onu sıralamak istiyorum.Sıralama TarihZaman Listesi, Zamana göre

Listem:

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 

çıktı bu sırada olmalıdır: Sadece

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

Gelecekte yayınlamak için lütfen başlığındaki etiketleri ve her türlü "teşekkür notları" nı engellemeye çalışın. [Meta] 'da tartışmaktan çekinmeyin (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts) –

+0

Bu soru, bu sayfadakilerle aynıdır: http://www.dotnetperls.com/sort-datetime –

cevap

30

, OrderByTimeOfDay:

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

Çözümüm işe yarıyorsa, bu daha iyi. –

+0

+1 güzel ve zarif. 10K'ya çok yakınsınız :) –

+1

Yönteminizi kullandığımda bu hatayı alıyorum: "'System.Linq.IOrderedEnumerable ' türünün 'System.Collections.Generic.List '. Açık bir dönüşüm var (bir dökümün eksik mi?) "KOD: Zaman Liste : Times = Times.OrderBy (x => x.TimeOfDay); – user2138160

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

Üstü yalnızca çalışacak ark tarih l ... durumunda tarih ayrıca şunları yapmalıdır farklıdır,

var sortedDates = dates.OrderByDescending(x => x); 

ya da başka kullanmak istemiyor musunuz aynıdır veya Linq sonra aşağıdaki gidebilirsiniz bilmiyorum. .

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

OP tarafından kaydedilen örnek verilerin, zaman aşımına uğramadığını not edin. –

+2

Bu linq çözümü aslında benim için çalışıyor. Diğerleri iyi sıralanmadı. Datetime, en eski güncellemeyi almak için .last() ekledim ve diğer yokken iyi çalışıyor. – Zwan

0

kullanım listesi değişkeni liste olduğu bu çözüm

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

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

İlgili konular