繁体   English   中英

如何重构已编译的LINQ查询?

[英]How do I refactor compiled LINQ queries?

是否可以将已编译的LINQ重构为SQL查询? 假设我有一个具有某些逻辑的查询,并且我想在此基础上进行构建。 是否可以重用该查询?

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

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

我想在上面的表达式上建立另一个查询。 CompiledQuery的文档表明,我无法在编译的委托的结果上应用另一个运算符。 那么,重构此类表达式的推荐方法是什么?

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

您可以使用PredicateBuilder之类的工具来帮助解决此问题:

Albahari平台很简单,而且效果很好,尽管很容易扩展或自己开发: http : //www.albahari.com/nutshell/predicatebuilder.aspx

显然,如果您的查询依赖于无法转换为SQL表达式的本地方法,则您必须重新考虑如何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM