2017-06-04 14 views
1

にパラメータを置き換えますか?は、与えられた式

+1

はい、 'ExpressionVisitor'を使用しています。 SOにはパラメータ置換えの例がたくさんあります。https://stackoverflow.com/search?q=user%3A5202563+ParameterReplacer –

+0

置き換えが必要なのでしょうか、単に式>が必要です'a'がパラメータである' expr'と同じことをしますか? – dasblinkenlight

+0

こんにちは@dasblinkenlight、代替または新しい式が動作する可能性があります。 –

答えて

2

あなたはexprの式ツリーを歩いて、そしてこのQ & Aで説明したアプローチ使用してparamAbのすべての出現を置き換えることができます:"Combine two lambda expressions with inner expression"を。

あなたは、単にそのパラメータとしてparamAを使用してラムダ式を必要とする場合は、代わりにexprをラップラムダを作成する方が簡単です:

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

Thx @dasblinkenlight! –

+3

私はこのアプローチについて常に忘れています(主に私が専有するEFではサポートされていないため)+1 –