Beispiel #1
0
        public static Expression <Hoisted <TIn, TOut> > Hoist(Expression <Func <TIn, TOut> > expr)
        {
            // rewrite Expression<Func<TIn, TOut>> as Expression<Hoisted<TIn, TOut>>

            var visitor             = new HoistingExpressionVisitor <TIn, TOut>();
            var rewrittenBodyExpr   = visitor.Visit(expr.Body);
            var rewrittenLambdaExpr = Expression.Lambda <Hoisted <TIn, TOut> >(rewrittenBodyExpr, expr.Parameters[0], _hoistedConstantsParamExpr);

            return(rewrittenLambdaExpr);
        }