„Order by Col1, Col2” przy użyciu struktury encji


118

Muszę zamówić według 2 kolumn przy użyciu struktury encji.

Jak to się robi?

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

to znaczy

SELECT * FROM Foo ORDER BY Col1, Col2

Odpowiedzi:


245

Spróbuj OrderBy(x => x.Col1).ThenBy(x => x.Col2). W każdym razie jest to funkcja LINQ, która nie jest wyłączna dla EF.


51

Inny sposób:

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

Jak zamawiasz zejście w ten sposób?
user551113

10
qqq.OrderByDescending (x => new {x.Col1, x.Col2})
parfilko

7
Otrzymuję komunikat o błędzie „Co najmniej jeden obiekt musi zaimplementować IComparable”, gdy jest używany z EntityFramework Core na dwóch polach ciągów.
Sixtstorm1

26

Próbować:

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

Aby zamówić w dół, spróbuj tego:

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)

1

Kolejne sortowanie odbywa się na poziomie DB. Nie na zwróconym wyniku.

Próbować:

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

Przykład 1:

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

Przykład 2:

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

Gdzie IQueryable<a>jest zapytanie o jednostkę, "col1 asc"to kolumna 1, a kierunek sortowania "col2 asc"to kolumna 2 i kierunek sortowania


-6

Należy pamiętać, że nie będzie to działać z Telerik's Grid ani żadnym innym komponentem DataSource firmy Telerik. Chociaż używa wstępnie przefiltrowanego obiektu IQueryable, sortowanie jest zawsze wykonywane automatycznie jako ostatni krok, skutecznie nadpisując ustawienia sortowania.

Musisz przestrzegać: Określenie domyślnego sortowania w siatce

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.