1

現在、クエリを構築するUIを構築していますが、他の式をラムダ関数の形式で保存できるようにしたいと考えています(インテリセンスなどで簡単に追加できるため)。しかし、私は例えばを取得する方法を見つけることができません。メンバーアクセスを実行して式に変換し、式ツリーに挿入できるラムダ。

nb。必要なのはメンバーアクセスだけではありません

すなわち。次の関数の本文を入力しようとしています

Function GetExpression(Of ParamType, ReturnType) _
    (f As Func(Of ParamType, ReturnType)) As Expression
4

1 に答える 1

2

メソッド パラメータを次のように変更します。

Function GetExpression(Of ParamType, ReturnType) _
    (f As Expression(Of Func(Of ParamType, ReturnType))) As Expression

これをラムダで呼び出すと、コンパイラは、コンパイルされたデリゲートの代わりに、トークン化された式ツリーをメソッドに提供します。

ラムダを実行するEnumerable.Whereと実行しないQueryable.Whereを比較対照してください。

于 2012-10-29T15:02:15.520 に答える