“Ordem por Col1, Col2” usando estrutura de entidade

117

Eu preciso ordenar por 2 colunas usando a estrutura de entidade.

Como isso é feito?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?

ie

SELECT * FROM Foo ORDER BY Col1, Col2
Lasse Edsvik
fonte

Respostas:

244

Experimente OrderBy(x => x.Col1).ThenBy(x => x.Col2). É um recurso do LINQ, de qualquer maneira, não exclusivo da EF.

Konamiman
fonte
50

Outra maneira:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko
fonte
Como você ordena descendo dessa forma?
user551113
10
qqq.OrderByDescending (x => novo {x.Col1, x.Col2})
parfilko
7
Recebo uma mensagem de erro "Pelo menos um objeto deve implementar IComparable" quando usado com EntityFramework Core em dois campos de string.
sixtstorm1 de
26

Experimentar:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)

Para pedir em ordem decrescente, tente o seguinte:

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)
hojjat.mi
fonte
1

A classificação seguinte acontece no nível do banco de dados. Não no resultado retornado.

Experimentar:

IQueryable<a>.OrderBy("col1 asc, col2 asc")

Exemplo 1:

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")

Exemplo 2:

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)

Onde IQueryable<a>está a consulta da entidade, "col1 asc"é a coluna 1 e a direção da classificação "col2 asc"é a coluna 2 e a direção da classificação

e03050
fonte
-6

Observe que isso não funcionará com a grade da Telerik ou qualquer outro componente DataSource da Telerik. Embora use o objeto IQueryable pré-filtrado, a classificação é sempre feita automaticamente como a última etapa, substituindo efetivamente suas configurações de classificação.

Você deve seguir: Especificando a classificação padrão na grade

lukyer
fonte