最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Kevin Halverson:如何实现 IQueryable

  • 2007-07-27
  • 本文字数:616 字

    阅读完需:约 2 分钟

在一个包含两个部分的系列文章中,Kevin Halverson 演示了如何通过实现 IQueryable 和 IQueryProvider 接口来创建一个LINQ 提供器。他特别使用了Windows Desktop Search 作为一个数据源。

他以解释CreateQuery 方法的工作原理作为开头。在他的例子当中,Kevin 把一个抽象的语法树转换成了适合Windows Desktop Search 使用的SQL 语句。

抽象语法树是一个表示为对象集合的表达式。其通常作为原始代码到编译代码的中间物,它也能被用在应用程序自我检查的运行时中。

Kevin 介绍的另外一个概念是闭包。闭包,和 lambda 表达式相关的一个概念,贯穿整个 LINQ 查询的设计。

当然,Linq 构架都是围绕着延时执行的概念而展开。也就是说,我在某时创建了一个查询,但是我并没有真正地计算它(获取输入的值并查询背后的数据源),直到我开始使用这个查询的计算结果。由于这个原因,我们打算获取到如何访问 cutoffDate 内容的信息,但不想保存这个值。我可以在查询字符串中放入一个记号([value*]),然后在查询结果可以被访问的时候,创建一个用来得到 cutoffDate 值的函数。

抽象语法树的一个有趣的副作用是你能完全用另外一个函数来代替某个函数的调用。在这个例子中,函数 LikeString 被转换成了 SQL 的 Like 操作符。

在第二部分,Kevin 通过对 GetEnumerator 函数的讨论完成了整个演练。在这里,对其它技术(如:编译一个抽象语法树和解析闭包中的变量)也进行了讨论。

查看英文原文: Kevin Halverson: How to implement IQueryable

2007-07-27 08:561091
用户头像

发布了 254 篇内容, 共 53.5 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

跨平台应用开发进阶(八) :uni-app 实现Android原生APP-云打包集成极光推送(JG-JPUSH)详细教程

No Silver Bullet

uni-app 极光推送 5月月更 云打包

Niobe开发板:基于OpenHarmony操作系统进行多线程(多任务)开发

拓维信息

OpenHarmony

音视频开发进阶课程|第一期:音频要素

ZEGO即构

RTC 音视频开发 音视频课程 音视频基础入门

技术人的推荐书单

Authing

身份云 科技书单

郑重声明

Authing

身份云 Idaas

科创人·智慧芽技术副总裁屠昶旸:技术之路是挑战之路,不愿在大厂空耗岁月

科创人

大数据培训在 Presto 中使用哈希改善动态集群缓存命中率

@零度

作为软件工程师,给年轻时的自己的建议(上)

禅道项目管理

程序员 工程师 职业成长

【小知识】云管理平台与一般管理系统有什么区别?

行云管家

云计算 云管理平台 云管理

解读分布式调度平台Airflow在华为云MRS中的实践

华为云开发者联盟

Python spark airflow 华为云MRS 大数据集群

MySQL缓存策略分析

C++后台开发

MySQL 数据库 后端开发 Linux服务器开发 C++后台开发

web前端培训学习中常见问题:竞态条件

@零度

前端开发

谈谈10年编程经历

非凸科技

程序员 编程语言 招聘 工程师 代码

业务逻辑的灵魂在哪里?

清林情报分析师

数据分析 数据建模 数据可视化 分析软件 分析思维

Tech Talk 活动预告丨云原生 DevOps 的 Kubernetes 技巧

亚马逊云科技 (Amazon Web Services)

云原生

如何在30分钟完成表格增删改查的前后端框架搭建

葡萄城技术团队

前端 前后端 系统搭建 表格系统

跨平台应用开发进阶(七) :uni-app 自定义 showToast

No Silver Bullet

uni-app 5月月更 吐司弹窗 跨终端

Authing 渠道合作伙伴火热招募中!

Authing

网络效应 Idaas 合作网络

涛思数据与中天钢铁签署战略合作协议,加速钢铁行业的数字化发展

TDengine

数据库 tdengine

2022年广州市等保测评公司新排名看这里!

行云管家

网络安全 等保 等保测评 广州 等保测评公司

31点经验分享与吐槽

老白鹿

不会这3个ChartBuilder使用技巧,怎么开发优秀的数字孪生可视化项目?

ThingJS数字孪生引擎

比渗透测试更有用,红队演练该如何开展?

青藤云安全

如何在 Web 应用里消费 SAP Leonardo 的机器学习 API

Jerry Wang

机器学习 前端开发 前端框架 SAP 5月月更

FlyFish|前端数据可视化开发避坑指南(一)

云智慧AIOps社区

JavaScript 前端 node,js 数据可视化工具

所谓测试报告

FunTester

数据分析软件有哪些分类?

清林情报分析师

数据分析 数据可视化 知识图谱 分析软件 分析工具

AI简报-Image Colorization调研

AIWeker

深度学习 5月月更 AI简报 Image Colorization

当姿态估计算法遇上《本草纲目》,看“刘畊宏男孩”如何驱动虚拟人

阿里云视频云

计算机视觉 虚拟人 人体姿态

架构实战营 第 6 期 模块六课后作业

火钳刘明

#架构实战营 「架构实战营」

AgentTesla病毒解析:利用钓鱼邮件窃取终端隐私数据

火绒安全

数据 终端安全 病毒 隐私安全

Kevin Halverson:如何实现IQueryable_.NET_Jonathan Allen_InfoQ精选文章