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

2024-02-01

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

假设每个结果都是由一个类定义的Result

我可以创建类似以下的方法:

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

我不清楚的是我怎样才能走那条路Expression参数并提取实际标准,然后我可以将其形成到对象图中以运行查询。

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

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


您可能想看看子类化班级。这提供了遍历表达式树的机制,您可以重写处理每种类型节点的方法。

以下是您可能会发现有用的其他一些链接:

  • 表达式树文档:

    • VB https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/concepts/expression-trees/
    • C# https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/expression-trees/
  • 表达式树基础知识(博客文章) https://learn.microsoft.com/en-us/archive/blogs/charlie/expression-tree-basics

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现自定义 LINQ-to-X 提供程序 的相关文章

随机推荐

  • 基于LSB-DCT的图像隐写术

    我正在研究基于 LSB DCT 的图像隐写术 其中我必须将 LSB 应用于图像的 DCT 系数 以便将数据嵌入到 JPEG 我对这一切都很陌生 所以搜索并阅读了一些研究论文 他们都缺乏很多有关 DCT 之后流程的信息 i 也在 stacko
  • grep - 如何输出进度条或状态

    有时我是grep 处理数千个文件 很高兴看到某种进度 栏或状态 我知道这不是小事 因为grep将搜索结果输出到STDOUT我的默认工作流程是将结果输出到文件中 并希望将进度条 状态输出到STDOUT or STDERR 这是否需要修改源代码
  • 如何获取页面上所有选中复选框的计数

    我想计算用户选择了多少个复选框 例如 从一组 10 个复选框中 如果他选择了 5 个 那么我希望能够对其进行计数 使用线路 checkbox checked 我可以选择所有选中的复选框 是否有办法获取该语句返回的所有元素的计数 Use th
  • fork()返回0,但是子进程getpid()!=0。为什么?

    这是测试 fork 系统调用的 C 代码 include
  • Vue 2 - 改变 props vue-warn

    我已开始https laracasts com series learning vue step by step https laracasts com series learning vue step by step系列 我停课了Vue
  • 为什么 git 无法将“origin/master”识别为有效的对象名称?

    www gt git branch track live origin master fatal Not a valid object name origin master www gt git remote origin www gt g
  • 在 C# 中使用 SQLite 的 Pragma-s

    我发布了一个问题 我的项目有一个 c dll 其中在 Sqllite 中创建了一个数据库 共享拒绝 无 这个 dll 会将数据插入到数据库中 我有一个 c exe 它必须访问数据库并显示它 显示需要异步完成 所以在启动与 sqlitedb
  • 运行测试时导入两次

    我的tests py中有这段代码 from models import 在 models py 中我有一个信号处理程序并将其注册为 post save connect post save note sender Note 当我运行测试时 m
  • 当 tabs + viewpager 位于滚动视图内时,无法加载片段?

    使用材料设计 tablayout viewpager材料设计布局 http blog grafixartist com material design tabs with android design support library 一切都
  • 弹簧支架控制器返回 404

    我的其余控制器是由 spring 编写的 返回 404 但是当我通过 Eclipse 进行调试时 我看到它到达我的方法并返回结果 但结果仍然是 404 控制器就像 RestController RequestMapping admin co
  • PHP Yii:运行时数据库连接

    我想在运行时使用 Yii 连接到第二个数据库 数据库名称将来自用户登录后的数据库表 我在教程中看到我应该这样做 db2 Yii createComponent array class gt EMongoClient server gt mo
  • 如何在 R 中模拟具有同配性或同质性的图?

    In R 我目前正在处理该包igraph 我想知道是否有任何方法可以模拟具有同质或同配结构的图 或者是否有其他方法R软件包允许这样做 谢谢 你有没有看过ergm https cran r project org web packages e
  • 如何检测Android应用程序是否被强制停止或卸载? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 假设应用程序运行良好 但用户强行停止
  • 在Refl中使用重写

    我正在使用 Idris 学习第 8 章类型驱动开发 我有一个关于 rewrite 如何与 Refl 交互的问题 此代码作为重写如何在表达式上工作的示例显示 myReverse Vect n elem gt Vect n elem myRev
  • Java中监听器的顺序

    我编写了自己的表格单元格编辑器 它扩展了AbstractCellEditor并实现了TableCellEditor an ItemListener and a MouseListener 有什么方法可以让我拥有mouseClicked方法先
  • 通过 Eclipse 使用 TestNG 和 Java 12 执行 Selenium 测试时启动层 java.lang.module.FindException 初始化期间发生错误

    引导层初始化期间发生错误 https i stack imgur com pNbsT png当我运行时 我不断收到此错误 我的测试 boot层初始化时出错 java lang module FindException 无法派生模块描述符 C
  • 查找两个语句之间的语义相似性

    我目前正在处理小型应用程序python我的应用程序具有搜索功能 当前使用difflib 但我想创建语义搜索它可以根据用户输入的文本从我的数据库中给出前 5 或 10 个结果 它与谷歌搜索引擎的工作原理相同 我找到了一些解决方案Here ht
  • if-let 语句不会解开可选内容

    我在我的代码中遇到了一些看起来很好奇的东西 并且想知道这种行为是否有一个简单的解释 鉴于以下声明 if let tabBarController topViewController as UITabBarController for sub
  • 如何推迟shared_ptr的删除操作?

    我创建了一个指针sample主要类 我正在将此指针传递给函数function1 该函数必须使用指针作为共享指针并使用该指针执行一些操作 退出期间function1 的析构函数sample由于调用shared ptr 当我将相同的指针传递给不
  • 实现自定义 LINQ-to-X 提供程序

    我有一个搜索工具 它接受复杂的搜索字符串 实际上是 JSON 中的 n 级对象图 并返回一些结果 我想通过类似 LINQ 的机制向其他 内部 开发人员公开该功能 假设每个结果都是由一个类定义的Result 我可以创建类似以下的方法 Func