http://javenstudio.org - C++ Java 分布式 搜索引擎 Naven's Research Laboratory - Thinking of Life, Imagination of Future
(原文:The LINQ Project, .NET Language Integrated Query )
经过了最近20年,面向对象编程技术(object-oriented (OO) programming technologies)在工业领域的应用已经进入了一个稳定的发展阶段。程序员现在都已经认同像 类(classes)、对象(objects)、方法(methods)这样的语言特性。考察现在和下一代的技术,一个新的编程技术的重大挑战开始呈现出来,即面向对象技术诞生以来并没有解决降低访问和整合信息数据(accessing and integrating information)的复杂度的问题。其中两个最主要访问的数据源与数据库(database)和XML相关。
LINQ提供了一条更常规的途径即给.Net Framework添加一些可以应用于所有信息源(all sources of information)的具有多种用途(general-purpose)的语法查询特性(query facilities),这是比向开发语言和运行时(runtime)添加一些关系数据(relational)特性或者类似XML特性(XML-specific)更好的方式。这些语法特性就叫做.NET Language Integrated Query (LINQ)。
.NET Language Integrated Query定义了一组多用途的标准查询操作符(standard query operators),可以在任何一种基于.NET平台的开发语言(.NET-based programming languagequery operators)中用一些简洁明了的语法就可以做到像访问、过滤、发送数据这样一些操作。
LONQ项目使用的可扩展的查询体系架构,可以提供同时处理XML数据和SQL数据的实现。基于XML (XLinq)的查询操作符使用一种高效率的,易使用的,并且在内存中处理的XML语法,如在主程序设计语言中使用的XPath/XQuery这样的功能。基于关系数据(Dlinq)的查询操作符即建立在综合查询语言(SQL-Based)语法基础上的语法,则直接定义在CLR类型库系统(CLR type system)中。
下面用一段C# 3.0的程序来介绍标准查询语法是如何使用的,该程序使用标准查询操作符处理一个 array 的数据内容:
编译并运行该程序将输出如下结果:
为了了解语言级集成查询是如何工作的,下面来剖析第一段程序:
局部变量 expr 使用一个查询表达式(query expression)进行初始化。通过从标准查询操作符(standard query operators)或特定领域操作符(domain-specific operators)中申请一个或更多的查询操作符(query operators),查询表达式(query expression)可以访问一个或更多信息源(information sources)。这种查询表达式使用三种标准的查询操作符,即 Where,OrderBy,和 Select。
Visual Basic 9.0 可以很好的支持 LINQ,在 Visual Basic 9.0 中实现上面语句(statement)的程序如下:
以上 C# 和 Visual Basic 的语句展示了查询的语法(query syntax),就像 foreach 语句一样,查询语法是一些可以让你轻松的手工编写的便利速记语句。上面的语句跟下面用 C# 编写的更直观的语法在语义上是一致的:
上面 Where、OrderBy 和 Select 的操作符的参数被称作 lambda 表达式(lambda expressions),这些分段的代码很像委托(delegates,参见C++ 托管扩展中的委托)。它们允许标准查询操作符单独地定义成方法(method),并且可以用句点符号(dot notation)分隔的一列语句(strung together)的方式来使用。连接起来,这些方法就形成了一种可扩展(extensible)的查询语言的基本形式。
Powered by: C++博客 Copyright © Javen-Studio