考慮:替換參數爲表達
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,替換或新的表達式可以工作。 –