«Упорядочить по 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.


51

По-другому:

qqq.OrderBy(x => new { x.Col1, x.Col2} )

Как вы заказываете спуск таким образом?
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)

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 и направление сортировки


-6

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.