2012-06-26 38 views
1

我有OrderBy的動態LINQ查詢。動態Linq順序按用戶定義的順序

.AsQueryable().OrderBy("FullName", asc) 

通過FullName排序後,我需要按狀態排序(類似於ThenBy())。狀態可能有例如「A」,「B」,「C」,「D」 但我需要按以下順序「B」,「A」,「D」,「C」排序。結果在這種情況下不能使用asc/desc。

+0

我的第一個解決方法是將數字排序字段添加到狀態表中。 – Jake1164

+0

從什麼來源(ORM?)獲得Queryable? –

+0

是狀態枚舉? –

回答

2

你需要做到以下幾點:

一)定義的順序你的鑰匙收集你想

var keys = new string[]{"B", "A", "D", "C"}; 

b)利用上面的鍵來定義數據

的定製訂單
var result = yourCollection.AsQueryable() 
          .OrderBy("FullName", asc) 
          .ThenBy(x=>keys.IndexOf(x.Status)); 
+0

謝謝,但這裏是Dynamic Linq,我不能用ThenBy。 – Roman

+0

爲什麼不呢?你可以把'OrderBy(「FullName」,asc)''後面的'IQueryable'轉換回'IQueryable ' – Seph