Eu tenho duas tabelas, movies
e categorias
, e recebo uma lista ordenada por categoryID primeiro e depois por **Name***.
A tabela de filmes tem três colunas ID, Nome e CategoriaID. A tabela de categorias tem duas colunas ID e Nome.
Eu tentei algo como o seguinte, mas não funcionou't funciona.
var movies = _db.Movies.OrderBy( m => { m.CategoryID, m.Name })
Usando LINQ não-lambda, consulta-sintaxe LINQ, você pode fazer isso:
var movies = from row in _db.Movies
orderby row.Category, row.Name
select row;
Para controlar a ordem de ordenação, utilize as palavras-chave ascending
(que é o padrão e, portanto, não é particularmente útil) ou descending
, como tal:
var movies = from row in _db.Movies
orderby row.Category descending, row.Name
select row;
Adiciona "novo":
var movies = _db.Movies.OrderBy( m => new { m.CategoryID, m.Name })
Isso funciona na minha caixa. Devolve algo que pode ser usado para classificar. Devolve um objecto com dois valores.
Similar, mas diferente da ordenação por uma coluna combinada, como se segue.
var movies = _db.Movies.OrderBy( m => (m.CategoryID.ToString() + m.Name))