我正在基於從客戶端瀏覽器發送的排序字段的集合進行數據集的自定義過濾和排序,並且正在使用Dynamic Linq來實現(大部分)所需的效果。我遇到問題的地方是當我嘗試按String類型的列進行排序時,該列同時包含傳統字符串和存儲為字符串的數字。看來我無法傳遞StringComparison枚舉值,也沒有為Dynamic Linq orderby函數指定IComparer參數。
我的排序代碼如下:
myList.AsQueryable().OrderBy("StringColWithNums ASC")
我最終得到:
1
10
100
11
12
2
20
代替:
1
2
10
11
12
20
100
任何人都有類似的經歷嗎?
myList.AsQueryable().Sort((r, s) => int.Parse(r).CompareTo(int.Parse(s)));
如果這些對int.Parse(r.StringColWithNums)
對象,則將進行一些調整,只需使用int.Parse(r.StringColWithNums)
或任何字段即可。
糟糕,抱歉,沒有閱讀所有OP,也看到它也包含字母,並且您需要動態linq,
編輯
我不知道您將能夠使用Dynamic linq並傳遞IComparer來做到這一點。獲得結果後,您也許可以做到這一點(即,就像我最初寫的那樣,有修改)。如果您想追求這一點,請發表評論。