"Ordina per Col1, Col2" utilizzando il framework di entità


118

Devo ordinare per 2 colonne utilizzando il framework di entità.

Come si fa?

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

vale a dire

SELECT * FROM Foo ORDER BY Col1, Col2

Risposte:


245

Prova OrderBy(x => x.Col1).ThenBy(x => x.Col2). È comunque una funzionalità di LINQ, non esclusiva di EF.


51

Un altro modo:

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

Come ordinate discendendo in questo modo?
user551113

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

7
Ricevo un messaggio di errore "Almeno un oggetto deve implementare IComparable" quando viene utilizzato con EntityFramework Core su due campi stringa.
sixtstorm1

26

Provare:

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

Per ordine discendente prova questo:

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

1

Il seguente ordinamento avviene a livello di DB. Non sul risultato restituito.

Provare:

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

Esempio 1:

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

Esempio 2:

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

Dove si IQueryable<a>trova la query dell'entità, "col1 asc"è la colonna 1 e la direzione di ordinamento "col2 asc"è la colonna 2 e la direzione di ordinamento


-6

Si prega di notare che questo non funzionerà con Grid di Telerik o qualsiasi altro componente DataSource di Telerik. Sebbene utilizzi oggetti IQueryable prefiltrati, l'ordinamento viene sempre eseguito automaticamente come ultimo passaggio, ignorando efficacemente le impostazioni di ordinamento.

Devi seguire: Specificare l'ordinamento predefinito nella griglia

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.