«Упорядочить по Col1, Col2» с использованием entity framework

118

Мне нужно заказать по 2 столбца, используя структуру сущностей.

Как это сделать?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?

т.е.

SELECT * FROM Foo ORDER BY Col1, Col2
Лассе Эдсвик
источник

Ответы:

245

Попробуй OrderBy(x => x.Col1).ThenBy(x => x.Col2). В любом случае это функция LINQ, а не только EF.

Konamiman
источник
51

По-другому:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko
источник
Как вы заказываете спуск таким образом?
user551113
10
qqq.OrderByDescending (x => new {x.Col1, x.Col2})
parfilko
7
Я получаю сообщение об ошибке «По крайней мере один объект должен реализовывать IComparable» при использовании с EntityFramework Core в двух строковых полях.
sixtstorm1
26

Пытаться:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)

Для заказа по убыванию попробуйте следующее:

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)
hojjat.mi
источник
1

Следующая сортировка происходит на уровне БД. Не по возвращенному результату.

Пытаться:

IQueryable<a>.OrderBy("col1 asc, col2 asc")

Пример 1:

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")

Пример 2:

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)

Где IQueryable<a>запрос объекта, "col1 asc"это столбец 1, а направление сортировки "col2 asc"- столбец 2 и направление сортировки

e03050
источник
-6

Обратите внимание, что это не будет работать с Telerik Grid или любым другим компонентом DataSource Telerik. Хотя в нем используется предварительно отфильтрованный объект IQueryable, сортировка всегда выполняется автоматически, поскольку последний шаг эффективно отменяет ваши настройки сортировки.

Вы должны следовать: Указание сортировки по умолчанию в сетке

lukyer
источник