考虑:替换参数为表达
var paramA = Expression.Parameter(typeof(string), "a");
和:
Expression<Func<string, bool>> expr = b => b == "Something";
反正是有由paramA
更换b
到表达expr
?
考虑:替换参数为表达
var paramA = Expression.Parameter(typeof(string), "a");
和:
Expression<Func<string, bool>> expr = b => b == "Something";
反正是有由paramA
更换b
到表达expr
?
你可以走的expr
表达式树,并使用这个问答& A中描述的方法与paramA
取代的b
所有出现:"Combine two lambda expressions with inner expression"。
但是,如果你只需要使用paramA
作为它的参数lambda表达式,它是更容易使一个包装expr
,而不是一个拉姆达:
var res = (Expression<Func<string,bool>>)Expression.Lambda(
Expression.Invoke(expr, paramA)
, paramA
);
Thx @dasblinkenlight! –
我总是忘记这种方法(主要是因为它不支持在我使用的EF中:) +1 –
是,使用'ExpressionVisitor'。有很多关于SO的参数替换器的例子,这里是我的https://stackoverflow.com/search?q=user%3A5202563+ParameterReplacer –
你需要一个替代品,或者你只需要一个'Expression>与'expr'有相同的作用,其中'a'是一个参数吗? –
dasblinkenlight
嗨@dasblinkenlight,替换或新的表达式可以工作。 –