2013-01-05 117 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