gpt4 book ai didi

.net - 实现自定义LINQ to X提供程序

转载 作者:行者123 更新时间:2023-12-04 07:25:43 24 4
gpt4 key购买 nike

我有一个搜索工具,它需要一个复杂的搜索字符串(实际上是JSON中的n级对象图)并返回一些结果。我想通过类似LINQ的机制向其他(内部)开发人员公开该功能。

假设每个结果由类Result定义

我可以创建如下所示的方法:

Function Search(Expression As Linq.Expression(Of System.Func(Of Result, Boolean))) As IEnumerable(Of Result)


我尚不清楚的是如何遍历 Expression参数并提取实际条件,然后可以将其形成到对象图中以运行查询。

有人可以向我指出如何实现此目标的教程/示例吗?

对于一些背景知识,我设法深入研究了表达式以获取递归结构,并能够检查lambda表达式的 .Body,但是当我想处理 Left 节点的属性,例如类型 Right,我遇到了问题。调试器正在使用Friend-scoped类( ExpressionType.Or)来检查对我不可用的表达式,因此我显然是走错了路。

最佳答案

您可能需要查看ExpressionVisitor类的子类。这提供了遍历表达式树的机制,您所拥有的全部覆盖了处理每种类型节点的方法。

另外,请参阅相关的(可能重复的)SO问题:Where are some good tutorials on writing a custom LINQ Provider?

编辑:这是一些其他链接,您可能会发现有用:

Expression Trees (MSDN article)

Expression Tree Basics (blog post)

关于.net - 实现自定义LINQ to X提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12181276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com