J'ai un outil de recherche qui prend une chaîne de recherche complexe (en fait, un graphe d'objets à n niveaux en JSON) et renvoie des résultats. Je souhaite exposer cette fonctionnalité à d'autres développeurs (internes) par le biais d'un mécanisme de type LINQ.
En supposant que chaque résultat soit défini par une classe Result
Je peux créer des méthodes qui ressemblent à quelque chose comme :
Function Search(Expression As Linq.Expression(Of System.Func(Of Result, Boolean))) As IEnumerable(Of Result)
Ce que je ne sais pas, c'est comment je peux suivre cette voie. Expression
et extraire les critères réels que je peux ensuite intégrer dans le graphe d'objets pour exécuter ma requête.
Quelqu'un peut-il m'indiquer un tutoriel/exemple de la manière dont cela peut être réalisé ?
Pour la petite histoire, j'ai réussi à creuser l'expression suffisamment loin pour obtenir la structure récursive et je suis en mesure d'examiner l'élément .Body
d'expressions lambda, mais lorsque j'en arrive à vouloir gérer les Left
y Right
propriétés d'un nœud de type eg ExpressionType.Or
J'ai des problèmes. Le débogueur utilise une classe de type Friend-scoped ( BinaryExpressionProxy
) pour examiner l'expression, ce qui n'est pas le cas pour moi.