写点什么

Orcas 系列课程第二期:LINQ 概览

  • 2007-04-26
  • 本文字数:1672 字

    阅读完需:约 5 分钟

Kit George 演示了 Orcas 在线 Webcast 系列课程的第二期。

Kit George 指出的第一件事就是 API 设计者能写出他们自己的 LINQ 数据提供程序(Provider),以供开发人员像使用内置数据提供程序那样以同样的方式来使用 LINQ 和操作数据。虽然创建自定义的 LINQ 数据提供程序不是那么轻而易举,但微软似乎很愿意为大家提供一些建议和帮助。

如下列出的一些支持 LINQ 的新特性让人激动不已。因为它们中的很多特性已经被期盼了很多年了,还有些特性很多人都无法想象会被引入到 VB 和 C#当中。在这个课程中给出的这些特性如下:

  • 查询表达式(Query Expressions)
  • XML 文本(XML Literals)(译者注:一种在代码中直接书写 XML 片段的特性)
  • XML 元素访问(XML Element Access)
  • 可空类型(Nullable Type)
  • 对象初始化器(Object Initializer)
  • 本地类型推断(Local Type Inference)
  • Lambda 表达式(Lambda Expression)
  • 丰富的智能感知(Rich Intellisense)
  • 扩展方法(Extension Method)
  • 表达式树(Expression Tree)
  • 匿名类型(Anonymous Type)
  • 三重操作符(Ternary Operator)
  • 联合操作符(Coalesce Operator)
  • 分离方法(Partial Methods)

课程中简要介绍了类型推断(Type inference)。类型推断已经存在于如 Haskell(译者注:Haskell 是一种函数式编程语言)这样的很多语言当中,目前在.NET Java 当中讨论的比较多。

丰富的智能感知功能是指更加超前的智能感知引擎。工具提示和代码自动完成比以前的 Visual Studio 版本能更早地被触发,并提供更多辅助信息。

在 VB 中书写 LINQ 查询语句是需要行连续符的。由于典型的 LINQ 查询语句的长度都不短,所以 VB 开发人员希望得到更好的智能感知引擎。

在 LINQ 查询语句中,Select 语句是可选的。如果使用了 Select 语句,那么必须出现在 From 语句之后。这一点,需要被智能感知首要支持。如果 Select 包含的字段不止一个,那么一个包含了对应属性的匿名类型就会被创建。相应地,通过在字段中传递一个构造器或者对象初始化器,普通的对象也同样能被创建。

在 VB 中对象初始化器的语法稍显笨重,因为它要求运用 With 关键字。

其他被熟知的 SQL 关键字,如 Distinct 也被支持。SQL 中的“Top n”语句通过 Take 和 Skip 等扩展方法来获得。

不像 SQL,LINQ 依赖于类型的早期绑定。这意味着当绑定到非特定类型的集合上的时候,开发人员可能不得不设定集合中包含的具体类型。例如:“From con As Control In Me.Controls”。

扩展方法被大量的使用,并能应用到类和接口上。针对 IEnumerable 的扩展方法涉及到了很多常见的场景。另外,你能使用 LINQ 语法做的任何事情同样都能使用扩展方法来完成,即允许查询的动态构建。

但这个 Beta 版本依然缺少了一些特性,包括非空类型、Join、Grouping 和 Lambda 表达式等,这些特性有望出现在 Beta2 中。LINQ 数据提供程序允许为 Grouping 创建自己的聚合函数。

如果你想通过查询得到一个单一的值,即通常所说的 Max 或 Average 值,那么语法会轻微的改变为“Dim value = Aggregate item In Collection Into Max(item)”这样的形式。

查询使用了延迟执行的方式。在查询中的数据被实际使用之前,查询都不会被处理。一个查询甚至能被写成针对另外一个查询进行操作,在这里,第二个查询的结果被实际使用到之前第一个查询不会被执行,例如在一个“For Each”这样的循环结构中。

“LINQ to SQL”支持 SQL Server,但不支持其他的数据库,如 Oracle 10。数据库厂商需要自己创建 LINQ 数据提供程序,让自己的数据库可以通过 LINQ 的方式访问。

Orcas Beta 2 有望在 7 月和 9 月之间发布。

查看英文原文: Live From Redmond Coverage: LINQ Overview - - - - - -

译者简介:朱永光,IT 自由人和环境保护者,微软最有价值专家(MVP)和 MCSD。他有 14 年的编程实践经历,5 年软件构架和开发管理经验,擅长微软相关技术和产品,目前主要关注软件构架和开发框架,是成都.NET 俱乐部副主席和核心讲师,个人博客为 http://redmoon.cnblogs.com 。现在他作为共同创始人经营着一家环境保护技术公司。为InfoQ 中文站贡献内容,请邮件至 china-editorial@infoq.com

2007-04-26 09:00691
用户头像

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

关注

评论

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

如何通过 NFTScan 浏览器查询 NFT项目的 Metadata 数据【教程】

NFT Research

区块链 NFT

集世界杯+GameFi元素的MetaElfLand,推出世界杯专场活动

西柚子

华为云安全亮相世界互联网大会

科技怪授

华为云

华为再次入选2022年Gartner® SIEM魔力象限

科技怪授

华为云

【论文复现】Panoptic Deeplab(全景分割PyTorch)

华为云开发者联盟

人工智能 华为云 论文复现

万恶的strpos函数

J.Smile

自学php

Stable Diffusion半秒出图;VLIW的前世今生;YOLOv5全面解析教程 | AI系统前沿动态

OneFlow

人工智能 深度学习 VLIW

Baklib帮助中心:自助服务指南

Baklib

客户服务 帮助中心

5G+云渲染,助力虚拟仿真医学实训

Finovy Cloud

云渲染

【保姆级】github博客快速搭建

Shen-Xmas

GitHub 前端 后端 博客 博客搭建

企业数字化转型中面临的开源供应链的挑战及应对措施

安势信息

开源 企业数字化转型 开源软件供应链 软件供应链安全 安势信息

云小课|帮您高效快速上传组件至私有依赖库

华为云开发者联盟

云计算 后端 华为云

集世界杯+GameFi元素的MetaElfLand,推出世界杯专场活动

小哈区块

不懂“数据服务”,聊什么“数据中台”

雨果

数据中台 数据服务

MemArts :高效解决存算分离架构中数据访问的组件

华为云开发者联盟

云计算 后端 华为云

大规模 Spring Cloud 微服务无损上下线探索与实践

阿里巴巴云原生

阿里云 微服务 云原生 Spring Cloud

PMO推行制度落地陷入困境怎么办?

PMO实践

项目管理 PMO 项目经理

助力双12,Quick Stock-瓴羊交易9.9元畅享打单发货

瓴羊企业智能服务

如何将项目经理负责制落到实处?完成这3个前置条件!

PMO实践

项目管理 PMO 项目经理

如何写出一份“有结果”的年度工作总结【超极实用!】

PMO实践

项目管理 PMO 项目经理 工作总结

NFT盲盒链游DAPP系统开发搭建技术

薇電13242772558

web3

全球6位IT负责人解读数字化转型不断失败的原因

雨果

数字化转型

如何在 Rocky Linux 上安装 Apache Kafka?

wljslmz

Apache kafka 11月月更

一文详解GaussDB(DWS) 的并发管控和内存管控

华为云开发者联盟

大数据 后端 华为云

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

股市老人

进场感知,主动服务|诚迈联手华为打造HarmonyOS原子化服务解决方案

最新动态

2023年值得学习的云计算技术有哪些?

wljslmz

云计算 11月月更

Nginx负载均衡配置、限流配置、Https配置详解

C++后台开发

nginx 负载均衡 HTTP 后端开发 C++开发

OneFlow-ONNX v0.6.0正式发布

OneFlow

人工智能 深度学习

大厂数据开发老司机送给数据工程师的10条建议,建议先收藏再细品!

雨果

数据开发

Orcas系列课程第二期:LINQ概览_.NET_Jonathan Allen_InfoQ精选文章