2011-01-14 11 views
10

Si aplico dos métodos OrderBy a mi consulta, al igual queLINQ a Entidades - se aplica varios métodos OrdenarPor no funcionan

query.OrderBy(rec => rec.Name).OrderByDescending(rec => rec.Title); 

Sólo entonces segundo método, la primera de ellas se ignora. ¿Es un error? ¿Qué pasa si necesito tener orden ascendente para una columna y orden descendente para otra? ¿No es posible en absoluto por la sintaxis del método?

Respuesta

25

Prueba esto:

query.OrderBy(rec => rec.Name).ThenByDescending(rec => rec.Title); 

Su segundo OrdenarPor se reseteo el primer conjunto de resultados. Es por eso que existe la extensión ThenBy. Conservará su primer conjunto de resultados, mientras le aplica ordenación adicional.

Esencialmente, su solución existente como pseudo SQL sería algo como esto:

results = SELECT * FROM Obj ORDER BY Name; 
results = SELECT * FROM results ORDER BY Title DESC; 

... que no es lo que desea. La extensión ThenBy sería algo como esto:

results = SELECT * FROM Obj ORDER BY Name ASC, Title DESC 
+0

Gracias por la explicación –

+0

excelente explicación detallada! ¡Gracias! –

Cuestiones relacionadas