1823 votes

Plusieurs "order by" dans LINQ

J'ai deux tables, movies et categories, et j'obtiens une liste ordonnée par categoryID d'abord, puis par Nom.

Le film comporte trois colonnes, l'ID, le Nom et le code de catégorie. La catégorie tableau a deux colonnes, l'ID et le Nom.

J'ai essayé quelque chose comme ce qui suit, mais il ne fonctionne pas.

var movies = _db.Movies.OrderBy( m => { m.CategoryID, m.Name })

3213voto

Nathan W Points 19990

Cela devrait fonctionner pour vous:

Var movies = _db.Movies.OrderBy(c => c.Category).ThenBy(n => n.Name)

633voto

Scott Stafford Points 13161

À l'aide de non-lambda, à la requête de la syntaxe LINQ, vous pouvez faire ceci:

var movies = from row in _db.Movies 
             orderby row.Category, row.Name
             select row;

[MODIFIER à l'adresse commentaire] Pour contrôler l'ordre de tri, utilisez les mots-clés ascending (qui est la valeur par défaut et donc pas particulièrement utile) ou descending, comme suit:

var movies = from row in _db.Movies 
             orderby row.Category descending, row.Name
             select row;

85voto

Alex Points 1864

Ajouter le "nouveau":

var movies = _db.Movies.OrderBy( m => new { m.CategoryID, m.Name })

Qui fonctionne sur ma boîte. Elle retourne quelque chose qui peut être utilisé pour le tri. Elle retourne un objet avec les deux valeurs.

Similaire, mais différente de tri par un combiné de colonne, comme suit.

var movies = _db.Movies.OrderBy( m => (m.CategoryID.ToString() + m.Name))

Cela devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X