2010-06-18 17 views
20
.OrderBy(y => y.Year).ThenBy(m => m.Month); 

Wie wird descending bestellen?linq mehrere auftrag ABSTIEGUNG

EDIT:

ich das versucht:

var result = (from dn in db.DealNotes 
         where dn.DealID == dealID       
         group dn by new { month = dn.Date.Month, year = dn.Date.Year } into date 
         orderby date.Key.year descending 
         orderby date.Key.month descending 
         select new DealNoteDateListView { 
          DisplayDate = date.Key.month + "-" + date.Key.year, 
          Month = date.Key.month, 
          Year = date.Key.year, 
          Count = date.Count() 
         }) 
         //.OrderBy(y => y.Year).ThenBy(m => m.Month) 
         ; 

und es scheint zu arbeiten. Ist es falsch, orderby zweimal zu benutzen, wie ich es hier benutzt habe?

Antwort

44

Sie können die absteigende Reihenfolge erhalten, indem ein anderes Paar von Methoden verwenden:

items.OrderByDescending(y => y.Year).ThenByDescending(m => m.Month); 

Mit LINQ-Abfrage, können Sie schreiben:

from date in db.Dates 
orderby date.Key.year descending, date.Key.month descending 
select new { ... } 

Der Trick ist, dass Sie nur eine orderby Klausel brauchen - Wenn Sie mehrere davon hinzufügen, wird die Liste jedes Mal neu sortiert. Um Elemente mit dem ersten Schlüssel mit einem anderen Schlüssel zu sortieren, müssen Sie sie unter Verwendung von , (orderby wird in OrderBy oder OrderByDescending übersetzt werden, während , in ThenBy oder ThenByDescending übersetzt wird).

+0

großartig, danke :) Ich habe meine Frage bearbeitet, könnten Sie bitte einen Blick darauf werfen –