public static Expression <Func <TResult> > ApplyParameter <TParameter0, TResult>(this Expression <Func <TParameter0, TResult> > func, TParameter0 parameter0Value) { var body = new ReplaceParameterVisitor(new Dictionary <ParameterExpression, Expression>() { { func.Parameters[0], Expression.Constant(parameter0Value, func.Parameters[0].Type) } }).Visit(func.Body); // ReSharper disable once AssignNullToNotNullAttribute return(Expression.Lambda <Func <TResult> >(body)); }
public static LambdaExpression ApplyParameters(this LambdaExpression lambdaExpression, object[] parameterValues) { Dictionary <ParameterExpression, Expression> replacements = new Dictionary <ParameterExpression, Expression>(); for (var index = 0; index < parameterValues.Length; index++) { object parameterValue = parameterValues[index]; replacements.Add(lambdaExpression.Parameters[index], Expression.Constant(parameterValue, lambdaExpression.Parameters[index].Type)); } var body = new ReplaceParameterVisitor(replacements).Visit(lambdaExpression.Body); return(Expression.Lambda(body)); }