2011-02-09 33 views
5

Muhtemelen sorduğum soru oldukça basittir ama bunu anlayamıyorum. Tarih alanı ve Zaman alanı içeren öğeler listesi var. Tarih alanı normal bir DateTime'dır ve Zaman alanı bir dizedir. Saat, HH: mm olarak biçimlendirilmiş ve 24 saat aralığına sahiptir. Tarihe Göre listemi SiparişTarih ve saate Göre Sıralama Listesi (dize formatında)

List.OrderBy (e => e.Date) yaparak basit ama kayıtların sırası göre böylece ben Zamana Göre sonradan sırayla bunu yapabilmek için görünmüyor tarih ve saat.

Bunu denedim ama büyük bir hata!

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); 

Birisi bu konuda bana yardımcı olabilir umuyoruz.

cevap

10

Sen OrderBy(...).ThenBy(...); ve ayrıca istiyoruz - zaman değil HH:mmise bunu ayrıştırmak yok - yapabilirsiniz sadece sıralama alfabetik yani

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

veya LINQ yoluyla:

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

Bunun oldukça basit olması gerektiğini biliyordum, bugün gerçekten çok uykum var. Cevap veren ilk kişi sizdiniz ve cevabınızı oldukça iyi buluyorsunuz, böylece puanları alıyorsunuz. Yine de yardım eden herkese teşekkürler. – Hallaghan

4

neden aşağıdaki gibi bir şey deneyin:

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() 'yi tanıyor musunuz?

List = List.OrderBy(DATE).ThenBy(Time) 
İlgili konular