web-dev-qa-db-ja.com

linq複数注文降順

.OrderBy(y => y.Year).ThenBy(m => m.Month);

descendingの順序を設定するにはどうすればよいですか?

[〜#〜]編集[〜#〜]

私はこれを試しました:

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

そして、それは機能しているようです。ここで使用したようにorderbyを2回使用するのは間違っていますか?

23
ilija veselica

別のメソッドのペアを使用して、降順を取得できます。

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

LINQクエリを使用すると、次のように記述できます。

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

秘訣は、必要なorderby句が1つだけであるということです。これらを複数追加すると、リストは毎回並べ替えられます。最初のキーが等しい要素を別のキーを使用して並べ替えるには、,を使用して要素を区切る必要があります(orderbyOrderByまたはOrderByDescendingに変換されますが,ThenByまたはThenByDescendingに変換されます)。

53
Tomas Petricek