Ответ 1
var sortedCollection =
from item in collection
orderby item.Property1, item.Property2 descending, item.Property3
select item;
Я хочу применить порядок по нескольким столбцам, некоторые по возрастанию, а другие - в порядке убывания в LINQ. Как я могу это сделать?
var sortedCollection =
from item in collection
orderby item.Property1, item.Property2 descending, item.Property3
select item;
Заимствование из 101 Образцы LINQ:
orderby p.Category, p.UnitPrice descending
или как Лямбда:
products.OrderBy(p => p.Category).ThenByDescending(p => p.UnitPrice);
Ответ Стивена будет работать, но я предпочитаю привязку метода к декларативному синтаксису LINQ, например.
collection
.OrderBy(e => e.Property1)
.ThenByDescending(e => e.Property2)
.ThenBy(e => e.Property3)
должно быть просто вопросом:
orderby x, y descending, z
Для полноты и в качестве альтернативы другим хорошим ответам здесь...
Существует также перегрузка или OrderBy, которая принимает IComparer, если это общий шаблон заказа, который вы хотите, тогда вам может захотеть создать класс, который осуществляет его реализацию и передает его в orderby, позволяя ему обрабатывать больше сложный порядок, таким образом, его можно использовать повторно, когда вы заказываете свой запрос таким же образом.