是否可以在查询表达式中使用动态 Linq 表达式? 像这样:
from obj1 in ObjectSet1
let res = ObjectSet2.Where(* SomeExpression *)
where ...
select ...
我正在尝试构建 Expression.Lambda<Func<TSource, bool>>
表达式为 SomeExpression。
- 是否可以在表达式查询中使用动态 Linq 表达式,或者我是否需要从头开始构建整个表达式树?
- 在构建 SomeExpression 时如何使用 obj1(如果有)?
注意:我正在使用 Entity Framework,我不能在表达式树中使用 SomeExpression.Compile()。
最佳答案
这不仅可能,而且很正常。可以从较小的树生成较大的表达式树(LINQ 就是这样做的)。你只需要传入一个 Expression<Func<TSource, bool>>
至 Where()
.
您可以在此处看到我对其他主题的回复 - replacing operator in Where clause Lambda with a parameter .有趣的部分在 MakeWhereLambda
中方法。
关于c# - 表达式查询中的动态 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674211/