"Ordenar por Col1, Col2" mediante el marco de la entidad

117

Necesito ordenar por 2 columnas usando el marco de la entidad.

¿Cómo se hace eso?

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

es decir

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

Respuestas:

244

Prueba OrderBy(x => x.Col1).ThenBy(x => x.Col2). De todos modos, es una característica de LINQ, no exclusiva de EF.

Konamiman
fuente
50

De otra manera:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko
fuente
¿Cómo se ordena descendiendo de esta manera?
user551113
10
qqq.OrderByDescending (x => new {x.Col1, x.Col2})
parfilko
7
Recibo un mensaje de error "Al menos un objeto debe implementar IComparable" cuando se usa con EntityFramework Core en dos campos de cadena.
sixtstorm1
26

Tratar:

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

Para ordenar descendiendo intente esto:

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

La siguiente clasificación ocurre en el nivel de base de datos. No en el resultado devuelto.

Tratar:

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

Ejemplo 1:

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

Ejemplo 2:

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

Donde IQueryable<a>es la consulta de entidad, "col1 asc"es la columna 1 y la dirección de clasificación "col2 asc"es la columna 2 y la dirección de clasificación

e03050
fuente
-6

Tenga en cuenta que esto no funcionará con Telerik's Grid ni con ningún otro componente DataSource de Telerik. Aunque utiliza un objeto IQueryable prefiltrado, la clasificación siempre se realiza automáticamente como último paso y anula de forma efectiva la configuración de clasificación.

Tienes que seguir: Especificar el orden predeterminado en la cuadrícula

lukyer
fuente