linq несколько заказов по убыванию - PullRequest
23 голосов
/ 18 июня 2010
.OrderBy(y => y.Year).ThenBy(m => m.Month);

Как установить descending заказ?

EDIT

Я пробовал это:

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 дважды, как я использовал это здесь?

1 Ответ

52 голосов
/ 18 июня 2010

Вы можете получить нисходящий порядок, используя другую пару методов:

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 - если вы добавите несколько из них, список будет пересортироваться каждый раз. Чтобы отсортировать элементы с первым ключом, равным другому ключу, вам необходимо разделить их, используя , (orderby переводится в OrderBy или OrderByDescending, а , переводится в ThenBy или ThenByDescending ).

...