2011-01-14 5 views
10

Wenn ich anwenden zwei OrderBy Methoden auf meine Frage, wie dieLINQ to Entities - mehrere SortiertNach Methoden nicht funktionieren

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

Dann nur zweite Methode angewendet wird, wird die erste ignoriert. Ist es ein Fehler? Was ist, wenn ich eine aufsteigende Reihenfolge für eine Spalte und eine absteigende Reihenfolge für eine andere haben muss? Ist das überhaupt nicht möglich durch Methodensyntax?

Antwort

25

Versuchen Sie folgendes:

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

Ihre zweite SortiertNach Ihre erste Ergebnismenge Reseting. Deshalb existiert die Erweiterung ThenBy. Es behält Ihre erste Ergebnismenge bei und wendet eine zusätzliche Sortierung an.

würde in etwa so aussehen, Ihre bestehende Lösung als psuedo SQL Im Wesentlichen:

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

... was nicht ist, was Sie wollen. Die ThenBy Erweiterung würde wie folgt aussehen:

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

Dank für Erklärung –

+0

Ausgezeichnete ausführliche Erklärung! Vielen Dank! –

Verwandte Themen