"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
Lasse Edsvik
la source

Réponses:

245

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

Konamiman
la source
51

Autrement:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko
la source
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)
hojjat.mi
la source
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

e03050
la source
-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

Lukyer
la source