LINQ to Entities - несколько методов OrderBy не работают

Если я применил два метода OrderBy к моему запросу, например

query.OrderBy(rec => rec.Name).OrderByDescending(rec => rec.Title);

Затем применяется только второй метод, первый из которых игнорируется. Это ошибка? Что делать, если мне нужно иметь восходящий порядок для одного столбца и нисходящий порядок для другого? Невозможно ли вообще реализовать синтаксис метода?

Ответ 1

Попробуйте следующее:

query.OrderBy(rec => rec.Name).ThenByDescending(rec => rec.Title);

Второй OrderBy перезагружает ваш первый набор результатов. Поэтому существует расширение ThenBy. Он сохранит ваш первый результирующий набор, добавив к нему дополнительную сортировку.

По сути, ваше существующее решение как psuedo SQL будет выглядеть примерно так:

results = SELECT * FROM Obj ORDER BY Name;
results = SELECT * FROM results ORDER BY Title DESC;

... это не то, что вы хотите. Расширение ThenBy будет выглядеть примерно так:

results = SELECT * FROM Obj ORDER BY Name ASC, Title DESC