コード例 #1
0
    static Expression <T> Compose <T>(this Expression <T> left, Expression <T> right, Func <Expression, Expression, Expression> merge)
    {
        var p1 = left.Parameters.First();    //Only handling with one parameter
        // replace parameters in the second lambda expression with the parameters in the first
        var rightBody = ParameterRebinder.Replaceparameter(p1, right.Body);

        // create a merged lambda expression with parameters from the first expression
        return(Expression.Lambda <T>(merge(left.Body, rightBody), left.Parameters));
    }