Reputation: 26534
Is it possible to use a dynamic Linq Expression inside a Query Expression? Something like this:
from obj1 in ObjectSet1
let res = ObjectSet2.Where(* SomeExpression *)
where ...
select ...
I'm trying to build Expression.Lambda<Func<TSource, bool>>
Expression as for SomeExpression.
Note: I'm using Entity Framework, I can't use SomeExpression.Compile() within the expression tree.
Upvotes: 3
Views: 1912
Reputation: 3056
It's not only possible, it's normal. Large expression trees can be generated from smaller trees (this is what LINQ does). You only have to pass in an Expression<Func<TSource, bool>>
to Where()
.
You can see how in my reply to this other thread here - replacing operator in Where clause Lambda with a parameter . The interesting part is in the MakeWhereLambda
method.
Upvotes: 3
Reputation: 2305
If you're wanting it to be completely dynamic, one possible option would be to use Expression Tree Serialization:
http://expressiontree.codeplex.com/
I started to use this a while back but that task got reprioritized, so I'm not sure how suitable it is for any given task. That said, it looks pretty good...
Hope this helps.
Nate
Upvotes: 1