Mám dve tabuľky, filmy
a kategórie
, a najprv dostanem zoradený zoznam podľa kategóriaID a potom podľa názvu.
Tabuľka filmov má tri stĺpce ID, Názov a CategoryID. Tabuľka kategórie má dva stĺpce ID a Názov.
Skúsil som niečo podobné, ale nefungovalo to.
var movies = _db.Movies.OrderBy( m => { m.CategoryID, m.Name })
Pomocou syntaxe LINQ, ktorá nie je lambda, to môžete urobiť:
var movies = from row in _db.Movies
orderby row.Category, row.Name
select row;
[EDIT na adresu komentára] Ak chcete ovládať poradie triedenia, použite kľúčové slová vstupné
(ktoré je predvolené, a preto nie je príliš užitočné) alebo zostupné
, napríklad takto:
var movies = from row in _db.Movies
orderby row.Category descending, row.Name
select row;
Pridať "new":
var movies = _db.Movies.OrderBy( m => new { m.CategoryID, m.Name })
To funguje na mojom boxe. Vracia to niečo, čo sa dá použiť na triedenie. Vracia objekt s dvoma hodnotami.
Podobne, ale inak ako pri triedení podľa kombinovaného stĺpca, a to takto.
var movies = _db.Movies.OrderBy( m => (m.CategoryID.ToString() + m.Name))