GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

LINQ to Objects 项目:EduLINQ、MoreLINQ 和 LINQBridge

2011 年 3 月 15 日

EduLINQ 尝试解释 LINQ to Objects 运算符是如何工作的。 MoreLINQ 是一组 LINQ to Objects 运算符,它扩充了标准的运算符。 LINQBridge 把 LINQ to Objects 移植到.NET Framework 2.0。

Jonathan Skeet ,从 03 年开始获得微软 C# MVP 称号,也是《C# in Depth》一书的作者,前不久完成了 EduLINQ 项目,它重新实现了 LINQ to Objects,并解释 LINQ 方法是如何工作的。这个项目是在 Apache License 2.0 下发布的,附带了针对.NET Framework 3.5 的源代码和单元测试。下面是 Skeet 从中学到的东西

  • LINQ to Objects 基于扩展方法、委托和 IEnumerable
  • 运算符会在合适的地方使用延迟执行,并且尽可能以流的方式传递数据;
  • 运算符不会改变原本的数据,而是返回一个新的序列,这个序列会返回相应的数据;
  • 查询表达式基于编译器的模式转换,除了相关查询表达式需要的模式之外,你不必实现其它的;
  • 迭代器代码块非常适合实现延迟执行;
  • 但会使即时验证参数成为问题;

Skeet 还创建了一个名为 MoreLINQ 的项目,这个类库包含了 21 个运算符,扩充了标准的 LINQ to Objects 运算符。其中一些如下:

  • Batch——把源序列分割成指定大小的子序列。
  • Consume——完全使用给定的序列。这个方法使用了即时执行,并且不会在执行的时候保存任何数据。(译者注:此方法只是简单地使用 foreach 遍历源序列,foreach 里不包含任何代码)
  • EquiZip——返回元祖(tuple)的投影(projection),每个元祖包含了每个参数序列的第 N 个元素。
  • MaxBy——根据给定的投影返回给定的序列的最大元素。
  • Scan——对元素序列上执行扫描(包含前缀的求和)。
  • Zip——“返回元祖的投影每个元祖包含每个参数序列的第 N 个元素。”(译者注:Zip 方法和 EquiZip 方法的区别在于当两个输入序列的长度不等时,前者会以元素较少的为准,剩余的元素将被忽略,而后者将会抛出异常)

LINQBridge 把 LINQ to Objects 移植到.NET Framework 2.0,为那些不得不使用旧版本的开发者提供 LINQ 的灵活和强大。


查看英文原文 LINQ to Objects Projects: EduLINQ, MoreLINQ, and LINQBridge

2011 年 3 月 15 日 06:551370

评论

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

第8周用户路径数据分析作业

skylar

面向复杂度架构设计的思考

Simon

架构实战营

用户路径地图+漏斗模型总结

mas

Redis 如何应对并发访问

escray

redis 极客时间 学习笔记 3月日更 Redis 核心技术与实战

区块链推动知识产权数字化,区块链在知识产权中的价值体现

13828808769

区块链+ #区块链#

带你全面认识CMMI V2.0(四)——管理 赋能

渠成CMMI

项目管理 CMMI

想拿月薪15K的offer,还不赶紧让自己,成为“证书”流?

Adobe国际认证

如何处理分析Flink作业反压的问题?

华为云开发者社区

实时计算 DWS Flink作业 反压 Sink

Rust从0到1-基础概念-控制流

rust 控制流

产品经理训练营 Week11 学习心得

Mai

kylin基本概念和原理

潮湿了我押韵的心情

AI 事件驱动场景 Serverless 实践

Serverless Devs

Kubernetes 云原生 #Serverless

搭建 Mac 系统下的 C++开发环境

Jack—Li

「架构师训练营 4 期」 第十二周 - 001&2

凯迪

架构师训练营 4 期

「产品经理训练营0期」第八周作业

🌟

产品 产品经理训练营

SpringCloud技术专题-Hystrix以及FeginClient异常

李浩宇/Alex

SpringCloud Fegin

C++中结构体的定义

Jack—Li

产品经理训练营第八章作业

新盛

订单和产品的多对多表关系在crudapi系统零代码实现

crudapi

API crud crudapi 一对多 多对一

centos7docker安装

happlyfox

Docker 学习 3月日更

APP 防重放实现

草原狼

安全 API 防重放

2020年刊例花费达1,486亿,数字户外成必然趋势!

󠀛Ferry

七日更 3月日更

ECMAScript 2018(ES9)新特性简介

程序那些事

JavaScript ecmascript 程序那些事 es9

BI大数据分析系统开发,助力企业数字化转型

13828808769

区块链 区块链+ #区块链#

Kubernetes v1.21 新特性预览

倪朋飞

Kubernetes 云原生

Python OpenCV 之像素的加减法,取经之旅第 15 天

梦想橡皮擦

3月日更

API 工具链研发的理论基础 - 流派

李宇飞

工具链 API

用户路径地图与漏洞模型

思亭

用户路径地图 漏洞模型

NA(Nirvana) Chain主打应用而生NA公链NAC公链

区块链第一资讯

爱奇艺大数据生态的实时化建设

Apache Flink

flink 实时计算

架构师:始于理性思考,成于科学实践——郭东白老师分享总结

青春不可负,生活不可欺

成长 架构设计 架构师

LINQ to Objects项目:EduLINQ、MoreLINQ和LINQBridge-InfoQ