2011-01-14 45 views
10

如果我用兩個OrderBy方法適用於我的查詢,像LINQ到實體 - 多種排序依據方法不起作用

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

那麼只有第二種方法被應用,第一個被忽略。這是一個錯誤嗎?如果我需要對一列進行升序排序而對另一列進行降序排序呢?方法語法根本無法實現?

回答

25

試試這個:

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

你的第二個排序依據是正在重置您的第一個結果集。這就是爲什麼ThenBy擴展存在。它將保留您的第一個結果集,同時對其應用其他排序。

從本質上講,現有的解決方案爲僞SQL將是這個樣子:

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

...這是不是你想要的。該ThenBy擴展會是這個樣子:

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

感謝解釋 – 2011-01-14 20:52:59