2013-01-05 115 views
1

我使用EF 5.0 Code First API,並且需要添加構建動態OrderBy表達式的能力(UI有一個過濾器面板,用戶可以選擇多個排序條件(例如,選擇頂部20個客戶,爲了通過姓氏ASC,然後通過BIRST日期降序)。實體框架中的E-SQL DbContext

ObjectContext的API公開OrderBy("it.PropertyName")方法,它看起來不錯,儘管它缺少編譯時間驗證。但是,我無法找到的DbContext API中的任何類似物。

谷歌搜索的問題,我發現了這樣的建議:

((IObjectContextAdapter)myContextInstance).ObjectContext.CreateQuery<MyEntity>("<ESQL Query>") 

但是,我不想放棄LINQ查詢。 在那裏有這樣的事情任何方式(混合ESQL和LINQ,因爲它可以通過使用的ObjectContext):

var customers = myDbContext.Customers.OrderBy("it.LastName desc").Where(c => c.Age < 18) 

回答

0

像這樣的事情?我不確定混合使用ESQL和LINQ,但是最後一個查詢可以完全從LINQ完成。

var customers = myDbContext.Customers.OrderByDescending(a => a.LastName).ThenBy(c => c.BirthDate).Where(b => b.Age < 18);

+0

謝謝回答,但問題是,條件可動態添加,我不事先知道會在過濾中使用哪些列。目前,我正在使用動態LINQ。 – nativehr