Подтвердить что ты не робот

Как применить несколько orderby в linq-запросе

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

4b9b3361

Ответ 1

var sortedCollection =
    from item in collection
    orderby item.Property1, item.Property2 descending, item.Property3
    select item;

Ответ 2

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

orderby p.Category, p.UnitPrice descending

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

products.OrderBy(p => p.Category).ThenByDescending(p => p.UnitPrice); 

Ответ 3

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

collection
    .OrderBy(e => e.Property1)
    .ThenByDescending(e => e.Property2)
    .ThenBy(e => e.Property3)

Ответ 5

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

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