c# - How to convert a LambdaExpression to typed Expression<Func<T, T>> -
i'm dynamically building linq queries nhibernate.
due dependencies, wanted cast/retrieve typed expression @ later time, have been unsuccessfull far.
this not working (the cast supposed happen elsewhere):
var functype = typeof (func<,>).makegenerictype(entitytype, typeof (bool)); var typedexpression = (func<t, bool>)expression.lambda(functype, itempredicate, parameter); //fails this working:
var typedexpression = expression.lambda<func<t, bool>>(itempredicate, parameter); is possible 'encapsulated' typed expression lambdaexpression?
var typedexpression = (func<t, bool>)expression.lambda(functype, itempredicate, parameter); //fails this not surprising, have compile lambdaexpression in order actual delegate can invoked (which func<t, bool> is).
so work, 'm not sure if need:
// no longer expression , cannot used iqueryable var mydelegate = (func<t, bool>) expression.lambda(functype, itempredicate, parameter).compile(); if not looking compile expression instead move expression tree around, solution instead cast expression<func<t, bool>>:
var typedexpression = (expression<func<t, bool>>) expression.lambda(functype, itempredicate, parameter);