複雑な検索文字列 (実際には、JSON の n レベル オブジェクト グラフ) を受け取り、いくつかの結果を返す検索ツールがあります。LINQ のようなメカニズムを介して、他の (内部) 開発者に機能を公開したいと考えています。
各結果がクラスによって定義されていると仮定しますResult
次のようなメソッドを作成できます。
Function Search(Expression As Linq.Expression(Of System.Func(Of Result, Boolean))) As IEnumerable(Of Result)
私がはっきりしていないのは、そのExpression
パラメーターをどのように調べて、クエリを実行するためのオブジェクト グラフに形成できる実際の条件を抽出するかということです。
誰かがこれを達成する方法のチュートリアル/例を教えてもらえますか?
ちょっとした背景として、再帰構造を取得するのに十分なほど式を掘り下げ、ラムダ式を調べることができましたが、たとえば type を使用して Node のandプロパティ.Body
を処理したい場合は、問題があります。デバッガーは Friend スコープのクラス ( ) を使用して、使用できない式を調べているため、明らかに間違ったルートに向かっています。Left
Right
ExpressionType.Or
BinaryExpressionProxy