2011-01-14 14 views
10

Gdybym zastosować dwie metody OrderBy do mojego zapytania, podobnie jakLINQ do podmiotów - wiele metod orderby nie działają

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

to tylko druga metoda jest stosowana, z których pierwszy jest ignorowany. Czy to błąd? Co się stanie, jeśli potrzebuję mieć rosnącą kolejność dla jednej kolumny i malejącą kolejność dla innej? Czy nie jest to w ogóle możliwe przez składnię metody?

Odpowiedz

25

Spróbuj tego:

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

Twój drugi OrderBy jest resetowanie swój pierwszy zestaw wyników. Dlatego istnieje rozszerzenie ThenBy. Zachowa swój pierwszy zestaw wyników, stosując dodatkowe sortowanie.

Zasadniczo istniejące rozwiązanie jako psuedo SQL będzie wyglądać mniej więcej tak:

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

... co nie jest to, co chcesz. Rozszerzenie ThenBy będzie wyglądać mniej więcej tak:

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

Dzięki za wyjaśnienie –

+0

Doskonały szczegółowe wyjaśnienie! Dziękuję Ci! –

Powiązane problemy