写点什么

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:00703
用户头像

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

关注

评论

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

OpenHarmony社区运营报告(2023年2月)

OpenHarmony开发者

OpenHarmony

软件工程高效学 | 软件工程基础

TiAmo

软件工程

全网最新架构实战文档:高并发+分布式+微服务+SpringBoot+Nginx

三十而立

Java 分布式 java面试

不同于Oracle:MySQL的insert会阻塞update

GreatSQL

MySQL oracle greatsql greatsql社区

扒站软件:SiteSucker汉化激活

真大的脸盆

Mac Mac 软件 网站下载 下载网站工具

Spring竟然可以创建“重复”名称的bean?—一次项目中存在多个bean名称重复问题的排查

京东科技开发者

spring bean @Bean 企业号 3 月 PK 榜

【共创共赢】AntDB数据库合作伙伴交流会(北京站)顺利举办

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 3 月 PK 榜

30s 就可以掌握的 Nginx 片段

Java你猿哥

Java nginx ssm Java工程师 nginx 开源版

SVN客户端:SmartSVN Mac许可证激活版

理理

焱融 YRCloudFile 在海量小文件场景训练加速优化策略

焱融科技

文件存储 容器存储 分布式文件存储 高性能存储 全闪存储

Z世代新母婴人群消费洞察2023

易观分析

母婴 新消费 Z世代 消费

滴滴 一面总结

Java你猿哥

Java 滴滴 java面试 面经

瓴羊Quick BI的存在,让企业管理不再复杂繁琐

对不起该用户已成仙‖

微前端框架single-spa子应用加载解析

京东科技开发者

生命周期 微前端 VUE 3.0 源码 企业号 3 月 PK 榜 single-spa

机器学习算法(八):基于BP神经网络的乳腺癌的分类预测

汀丶人工智能

数据挖掘 机器学习 BP神经网络

公司刚来的阿里p8,看完我构建的分布式框架,甩给我一份文档

三十而立

Java 分布式 java面试

CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理

阿里巴巴云原生

阿里云 云原生 虚拟化 CNStack

阿里架构组分布式架构技术使用心得:全在这一份文档里面了

三十而立

Java java面试

ShareSDK常见问题

MobTech袤博科技

cookie时效无限延长方案

京东科技开发者

自动化测试 Cookie 接口自动化 UI自动化 企业号 3 月 PK 榜

三维动画视觉软件Autodesk Maya 2023软件介绍及安装教程

理理

maya Autodesk Maya 安装教程

pulsar 报错源码排查:"Not enough non-faulty bookies available"

李code

源码 pulsar 故障恢复 参数调优 白话源码

解决90%面试问题!GitHub顶级"Java面试手册"了解下八股文天花板

Java你猿哥

Java 面经 校招 Java工程师 春招

Astute Graphics for Mac(全系列ai插件合集)支持ai 2022/2023

理理

Astute Graphics AI插件

如何使用责任链默认优雅地进行参数校验?

JAVA旭阳

Java spring

博睿学院 | 本周四,博睿学院数据集成系列公开课正式开讲

博睿数据

数据中台 智能运维 博睿数据 博睿学院

聊聊前端性能指标那些事儿

京东科技开发者

性能优化 前端 性能 前端性能 企业号 3 月 PK 榜

对前端性能优化的一些小看法

Yestodorrow

49天含泪苦学这些分布式技术文档,一不小心,吊打了字节跳动面试官

三十而立

Java 分布式 java面试

CoordConv:给你的卷积加上坐标

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

面试造飞机?GitHub顶级“java面试手册2023”(面试通过率95%)

Java你猿哥

Java 面试 面经 Java工程师 春招

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