是否可以在查询表达式中使用动态Linq表达式? 像这样:
from obj1 in ObjectSet1
let res = ObjectSet2.Where(* SomeExpression *)
where ...
select ...
我正在尝试为SomeExpression构建Expression.Lambda<Func<TSource, bool>>
表达式。
注意:我正在使用Entity Framework,我不能在表达式树中使用SomeExpression.Compile()。
答案 0 :(得分:3)
这不仅是可能的,而且是正常的。可以从较小的树生成大型表达式树(这是LINQ所做的)。您只需将Expression<Func<TSource, bool>>
传递给Where()
。
您可以在我的回复中查看此处的其他帖子 - replacing operator in Where clause Lambda with a parameter。有趣的部分是MakeWhereLambda
方法。
答案 1 :(得分:1)
如果您希望它是完全动态的,一种可能的选择是使用表达式树序列化:
http://expressiontree.codeplex.com/
我开始使用它一段时间但是这个任务得到了重新优先级,所以我不确定它对于任何给定的任务是多么合适。那说,看起来很不错......
希望这有帮助。
内特