2012-03-13 26 views
22

好了,所以在我們的項目中,我使用System.Linq.Dynamic庫,但我只注意到我不能做如下因素:System.Linq.Dynamic不支持OrderByDescending(「someColumn」)?

myDataSource.OrderByDescending(「someColumnName」)

因爲我得到以下錯誤:

重載決策失敗,因爲沒有accessable OrderByDescending可以用這些參數調用...

看來,圖書館只支持排序依據(「someColumnName」)。是否有這樣的原因,如果我想按降序重新排列記錄,我將如何繞過此問題?我是否必須使用Reverse()例如OrderBy(「someColumnName」)。Reverse()?似乎是一個黑客...

任何意見將不勝感激...

回答

44

假設你正在使用從Microsoft樣本庫中的DynamicQuery助手文件(這是在命名空間System.Linq.Dynamic)然後閱讀源代碼之後,它看起來像你需要如下指定要排序:

myDataSource.OrderBy("someColumnName descending") 
+0

我認爲OrderByDescending方法不接受只有1個字符串參數?! – 2012-03-13 16:19:50

+0

對不起 - 我打錯了答案。 Microsoft的DynamicQuery幫助程序中的OrderBy方法允許您指定逗號分隔的字符串排序,如下所示。 – 2012-03-13 16:22:32

+3

是的,這是我正在尋找的答案。如果我可以添加,你可以實際上只是說myDataSource.OrderBy(「someColumnName DESC」)換句話說,你不必輸入整個降序單詞。 – Marko 2012-03-13 17:16:35

8

如果你使用的字符串值(比如我),你必須把它串聯到這樣的字符串:

myDataSource.OrderBy(columnName + " descending"); 

不要忘記在「降序」之前添加一個空格,否則會出現錯誤。