2011-03-28 12 views
16

Bu hızlı bir işlem.
Linq'den sql'ye, bir datetime alanıyla sipariş vermem gerekiyor, daha sonra aynı tarihin zaman dilimine göre sırayla yükseliyor, anlam kazanıyor mu? Burada gerekli sonucun bir örnek verilmiştir:

[Seri] [Tarih (aa-gg-yıl: ss-AA-p)]
1 2008/03/13: 10-10-02
2 3-13 -2008: 10-12-60
3 2008/03/12: 12-05-55


Linq'den sql'ye: datetime desc'e göre sipariş verin, sonra veri asc'nin zaman kısmına göre sipariş verin.

denedim:

return query.OrderByDescending(c=> c.Time).ThenBy(c=> c.Time.TimeOfDay); 


Ve als

query.OrderByDescending(c => c.Time).ThenBy(c => c.Time.Hour).ThenBy(c=> c.Time.Minute).ThenBy(c=> c.Time.Second); 


ama asla gibiydi: o çalıştı. Herhangi bir öneriniz var mı?

cevap

48

Sıralama için Date ve TimeOfDay özelliklerini kullanın.

return query 
    .OrderByDescending(c=> c.Time.Date) 
    .ThenBy(c=> c.Time.TimeOfDay); 
+1

Aww evet eşzamanlı cevap yine – thmshd

+0

İlk çalışma cevabı! Kazanan! Teşekkür ederim dostum. – Galilyou

14

Sorun, "Zaman" öğesinin Tarih ve Saat bilgilerini içerdiğinden, bu nedenle zaten tamamen sıralama yapmasıdır. İlk olarak sıralama yapmak için Tarih Bölümü'nü almanız gerekir.

return query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay); 

Test edilmedi :) Aynı zaman damgası herhangi bir kayıt sahipseniz aşağıdaki orderbys yürürlüğe girecek böylece

2

ben, ilk OrderByDescending datetime (tarih + saat) her şeyi sıralar düşünüyorum.

yanı çalışacak keneler bu

query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay) 
0

açın o deneyin:

return query.OrderByDescending(c=> c.Time.Ticks)