Ho due tabelle, movies
e categories
, e ottengo una lista ordinata per categoryID prima e poi per Name.
La tabella dei film ha tre colonne ID, Name e CategoryID. La tabella delle categorie ha due colonne ID e Name.
Ho provato qualcosa come il seguente, ma non ha funzionato.
var movies = _db.Movies.OrderBy( m => { m.CategoryID, m.Name })
Usando la sintassi LINQ non Lambda, è possibile fare questo:
var movies = from row in _db.Movies
orderby row.Category, row.Name
select row;
[EDIT to address comment] Per controllare l'ordine di ordinamento, utilizzare le parole chiave ascending
(che è il default e quindi non particolarmente utile) o descending
, così:
var movies = from row in _db.Movies
orderby row.Category descending, row.Name
select row;
Aggiungere "new":
var movies = _db.Movies.OrderBy( m => new { m.CategoryID, m.Name })
Questo funziona sulla mia scatola. Restituisce qualcosa che può essere usato per ordinare. Restituisce un oggetto con due valori.
Simile, ma diverso dall'ordinamento per una colonna combinata, come segue.
var movies = _db.Movies.OrderBy( m => (m.CategoryID.ToString() + m.Name))