J'ai deux tables, movies
et categories
, et j'obtiens une liste ordonnée par categoryID d'abord et ensuite par Name.
La table des films a trois colonnes ID, Name et CategoryID. La table des catégories comporte deux colonnes : ID et Nom.
J'ai essayé quelque chose comme ce qui suit, mais cela n'a pas fonctionné.
var movies = _db.Movies.OrderBy( m => { m.CategoryID, m.Name })
En utilisant une syntaxe de requête LINQ non-lambda, vous pouvez le faire :
var movies = from row in _db.Movies
orderby row.Category, row.Name
select row;
[Pour contrôler l'ordre de tri, utilisez les mots-clés ascending
(qui est la valeur par défaut et n'est donc pas particulièrement utile) ou descending
, comme ceci :
var movies = from row in _db.Movies
orderby row.Category descending, row.Name
select row;
Ajouter "nouveau" :
var movies = _db.Movies.OrderBy( m => new { m.CategoryID, m.Name })
Cela fonctionne sur ma boîte. Il retourne quelque chose qui peut être utilisé pour trier. Elle renvoie un objet avec deux valeurs.
Similaire, mais différent du tri par une colonne combinée, comme suit.
var movies = _db.Movies.OrderBy( m => (m.CategoryID.ToString() + m.Name))