„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
Lasse Edsvik
źródło

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.

Konamiman
źródło
51

Inny sposób:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko
źródło
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)
hojjat.mi
źródło
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

e03050
źródło
-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

lukyer
źródło