"Trier par Col1, Col2" à l'aide du framework d'entité


118

Je dois commander par 2 colonnes en utilisant le framework d'entité.

Comment cela se fait-il?

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

c'est à dire

SELECT * FROM Foo ORDER BY Col1, Col2

Réponses:


245

Essayez OrderBy(x => x.Col1).ThenBy(x => x.Col2). C'est une fonctionnalité LINQ, de toute façon, non exclusive à EF.


51

Autrement:

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

Comment commandez-vous la descente de cette façon?
user551113

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

7
J'obtiens un message d'erreur «Au moins un objet doit implémenter IComparable» lorsqu'il est utilisé avec EntityFramework Core sur deux champs de chaîne.
sixtstorm1

26

Essayer:

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

Pour l'ordre par ordre décroissant, essayez ceci:

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

1

Le tri suivant se produit au niveau de la base de données. Pas sur le résultat renvoyé.

Essayer:

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

Exemple 1:

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

Exemple 2:

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

IQueryable<a>est la requête d'entité, la "col1 asc"colonne 1 et la direction de tri "col2 asc"est la colonne 2 et la direction de tri


-6

Veuillez noter que cela ne fonctionnera pas avec la grille de Telerik ou tout autre composant DataSource de Telerik. Bien qu'il utilise un objet IQueryable préfiltré, le tri est toujours effectué automatiquement en dernière étape remplaçant efficacement vos paramètres de tri.

Vous devez suivre: Spécifier le tri par défaut dans la grille

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.