是否可以重构编译的LINQ to SQL查询?假设我有一些逻辑的查询,我想建立它。是否可以重用该查询?
例如,假设我有一个基本查询来获取活动项目:
Func<DataContext, IQueryable<Item>> GetActiveItems =
CompiledQuery.Compile((DataContext context) =>
context.Items.Where(item => item.IsActive));
我想构建上面的表达式来进行另一个查询。 CompiledQuery
的文档表明我不能对编译的委托的结果应用另一个运算符。那么重构这些表达式的推荐方法是什么?
我想我应该使用Expression
,但它应该如何使用?或者有更好的方法吗?
答案 0 :(得分:1)
你可以使用像PredicateBuilder这样的东西来帮助解决这个问题:
Albahari的一个很简单,虽然很容易扩展或开发自己,但效果很好: http://www.albahari.com/nutshell/predicatebuilder.aspx
显然,如果您的查询依赖于无法转换为SQL表达式的本地方法,则必须重新考虑如何执行此操作。
答案 1 :(得分:-1)
没有。它被编译,意思是:已经翻译成sql。您需要重新开始使用新查询。