首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达式查询中的动态Lambda表达式

表达式查询中的动态Lambda表达式
EN

Stack Overflow用户
提问于 2012-03-12 20:21:11
回答 2查看 1.9K关注 0票数 3

是否可以在查询表达式中使用动态Linq表达式?就像这样:

代码语言:javascript
复制
from obj1 in ObjectSet1
let res = ObjectSet2.Where(* SomeExpression *)
where ...
select ...

我正在尝试构建Expression.Lambda<Func<TSource, bool>>表达式,就像构建SomeExpression表达式一样。

是否可以在表达式查询中使用动态Linq表达式,还是需要从头构建整个表达式树?如果存在,在构建SomeExpression?时如何使用obj1?

注意:我使用的是实体框架,不能在表达式树中使用SomeExpression.Compile()。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-12 21:02:08

这不仅是可能的,也是正常的。大型表达式树可以从较小的树中生成(这就是LINQ所做的)。您只需将一个Expression<Func<TSource, bool>>传递给Where()

在我对这里的另一个线程- replacing operator in Where clause Lambda with a parameter的回复中,您可以看到。有趣的部分在MakeWhereLambda方法中。

票数 3
EN

Stack Overflow用户

发布于 2012-03-12 20:34:12

如果您希望它是完全动态的,一个可能的选项是使用Expression序列化:

http://expressiontree.codeplex.com/

我一段时间前就开始使用它了,但是这个任务被重新排序了,所以我不确定它是否适合于任何给定的任务。也就是说,看上去很不错..。

希望这能有所帮助。

内特

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9674211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档