将参数替换为表达式

时间:2017-06-04 15:19:50

标签: c# linq lambda expression

假设:

var paramA = Expression.Parameter(typeof(string), "a");

Expression<Func<string, bool>> expr = b => b == "Something";

是否有bparamA替换为expr表达式?

1 个答案:

答案 0 :(得分:2)

您可以走expr的表达式树,并使用此问答语"Combine two lambda expressions with inner expression"中描述的方法将所有b替换为paramA

但是,如果你只需要一个使用paramA作为参数的lambda表达式,那么更容易制作一个包裹expr的lambda:

var res = (Expression<Func<string,bool>>)Expression.Lambda(
    Expression.Invoke(expr, paramA)
,   paramA
);