2
は、2つの発現ツリーを考えてみましょう:式ツリーは - 代替表現
Expression<Func<float, float, float>> f1 = (x, y) => x + y;
Expression<Func<float, float>> f2 = x => x * x;
私はf1
の2番目のパラメータとして表現f2
に置き換えて、次の式を取得する:
Expression<Func<float, float, float>> f3 = (x, y) => x + y * y;
最も簡単な方法がありますExpression.Lambda
とExpression.Invoke
を使用すると、結果は次のようになります
しかし、これはinvoke/lambdaを適切に処理できないORMの制限のために私にとって受け入れられないものです。
式ツリーを完全に横断することなく式を構築することは可能ですか?私のニーズを満たす実際の例はhereですが、もっと簡単な解決法が必要です。
のフルトラバーサルなし表現木 - いいえ。基本的には、 'ExpressionVisitor'で実装されているパラメータ置換えが必要です。 –