"Замовлення Col1, Col2", використовуючи структуру сутності


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} )

Як ви замовляєте спуск таким чином?
користувач551113

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 або будь-яким іншим компонентом DataSource Telerik. Хоча він використовує попередньо відфільтрований об'єкт IQueryable, сортування завжди проводиться автоматично, як останній крок, що ефективно переосмислює ваші налаштування сортування.

Ви повинні слідувати: Вказання сортування за замовчуванням у сітці

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.