Как применить множественный порядок в запросе linq - PullRequest
20 голосов
/ 06 января 2011

Я хочу применить порядок по нескольким столбцам, некоторые в порядке возрастания, а другие в порядке убывания в LINQ. Как я могу это сделать?

Ответы [ 5 ]

30 голосов
/ 06 января 2011
var sortedCollection =
    from item in collection
    orderby item.Property1, item.Property2 descending, item.Property3
    select item;
27 голосов
/ 06 января 2011

Заимствование из 101 образцов LINQ :

orderby p.Category, p.UnitPrice descending

или как лямбда:

products.OrderBy(p => p.Category).ThenByDescending(p => p.UnitPrice); 
6 голосов
/ 06 января 2011

Ответ Стивена будет работать, но я предпочитаю цепочку методов декларативному синтаксису LINQ, например,

collection
    .OrderBy(e => e.Property1)
    .ThenByDescending(e => e.Property2)
    .ThenBy(e => e.Property3)
1 голос
/ 06 января 2011

следует просто указать

orderby x, y descending, z

см. старые добрые ms примеры

0 голосов
/ 06 января 2011

Для полноты и в качестве альтернативы другим хорошим ответам здесь ...

Существует также перегрузка или OrderBy, который принимает IComparer. Если это обычный шаблон заказа, который вы хотите, то вы можете создать класс, который его реализует, и передать его в предложение orderby, позволяющее обрабатывать сложный порядок, таким образом, его можно использовать повторно, когда вы заказываете свой запрос одинаково.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...