1

是否可以重构已编译的 LINQ to SQL 查询?假设我有一个带有一些逻辑的查询,我想在它的基础上进行构建。是否可以重用该查询?

例如,假设我有一个基本查询来获取活动项目:

Func<DataContext, IQueryable<Item>> GetActiveItems =
    CompiledQuery.Compile((DataContext context) =>
        context.Items.Where(item => item.IsActive));

我想在上述表达式的基础上进行另一个查询。的文档CompiledQuery表明我不能在编译委托的结果上应用另一个运算符。那么重构这些表达式的推荐方法是什么?

我想我应该使用Expression,但应该如何使用呢?或者,还有更好的方法?

4

1 回答 1

1

您可以使用 PredicateBuilder 之类的东西来帮助解决这个问题:

Albahari 很简单,工作得很好,虽然很容易扩展或开发你自己的: http ://www.albahari.com/nutshell/predicatebuilder.aspx

显然,如果您的查询依赖于无法转换为 SQL 表达式的本地方法,您将不得不重新考虑如何执行此操作。

于 2010-12-30T09:48:35.327 回答