我有一个搜索工具,它采用复杂的搜索字符串(实际上是 JSON 中的 n 级对象图)并返回一些结果。我想通过类似 LINQ 的机制向其他(内部)开发人员公开该功能。
假设每个结果都由一个类定义Result
我可以创建看起来像这样的方法:
Function Search(Expression As Linq.Expression(Of System.Func(Of Result, Boolean))) As IEnumerable(Of Result)
我不清楚的是如何遍历该Expression
参数并提取实际标准,然后我可以将其形成对象图以运行我的查询。
有人可以指出如何实现这一点的教程/示例吗?
对于一些背景知识,我已经设法深入研究表达式以获得递归结构并能够检查.Body
lambda 表达式,但是当我想要处理具有例如 type 的节点的Left
和属性时,我有问题。调试器正在使用 Friend 范围的类 ( ) 来检查我无法使用的表达式,所以我显然走错了路。Right
ExpressionType.Or
BinaryExpressionProxy