当前位置:编程学习 > C#/ASP.NET >>

语言级集成查询LINQ

LINQ,全名叫 Language INtegrated Query,它把查询(Query)和设置(set operations)等操作封装起来,就像.NET语言里如 C# 或 VB 最先实现的 SQL statements 查询语句一样。 
Query 表达式,也就是你所熟悉并热衷于使用的 SQL 语法如“from”、“where”和“select”等以及其他 C# 和 VB 里最先实现的查询语法。不仅如此,Query 表达式还可用于跨应用领域查询数据。在下面的例子中,示范如何查询对象数据(Objects),就如同查询数据库(Database)中的数据一样容易。
经过了最近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)中用一些简洁明了的语法就可以做到像访问、过滤、发送数据这样一些操作。 
LINQ项目使用的可扩展的查询体系架构,可以提供同时处理XML数据和SQL数据的实现。基于XML (XLinq)的查询操作符使用一种高效率的,易使用的,并且在内存中处理的XML语法,如在主程序设计语言中使用的XPath/XQuery这样的功能。基于关系数据(Dlinq)的查询操作符即建立在综合查询语言(SQL-Based)语法基础上的语法,则直接定义在CLR类型库系统(CLR type system)中。 
,.NET 3.5中提供了5种形式的LINQ: 

LINQ to Objects:提供对各种集合类型的实体对象映射;
LINQ to DataSets:服务离线的内存数据库——DataSet;
LINQ to SQL:专用于SQL Server数据库;
LINQ to Entities:服务SQL Server之外的关系数据实体,并为其他数据库产品提供扩展;
LINQ to XML:适用于层次型XML数据;
为了满足LINQ需要,C# 3.0(Visual Basic 9)也作了较大调整,为了应对越来越复杂的对象系统,隐式类型化局部变量(Var)和匿名类被添加到语言之中。考虑到数据访问在众多应用中的基础地位以及LINQ的便利性,相信它会成为下一波.NET项目实施中的首选。
LINQ架构图如下:


为了让开发人员,尤其是写Provider的人群更简单地理解LINQ是如何工作的,Bart De Smet创建了一个称为LINQSQO(LINQ Standard Query Operator, LINQ标准查询操作器)的LINQ克隆版本。他描述如下:

这是自LINQ在PDC 2005大会上第一次面世以来,我第一个LINQ相关的项目。这个项目包括一个在LINQ中被使用的LINQSQO的定制实现。更具体地说,它是对可枚举静态类的克隆,它的所有扩展方法你都能在System.Core.dll中的System.Linq命名空间中找到。这样,你就可以将它看作一个LINQ to Objects的等价物。这个项目的最初目标是让开发者更好地了解LINQ是如何工作的。另外,和源代码一起我们还提供了148个单元测试来处理所有查询操作器的基本测试。


转自:http://www.keyusoft.cn/(X(1)S(eynciramatxvb055oqfuec45))/Default.aspx?Page=linq&AspxAutoDetectCookieSupport=1 --------------------编程问答-------------------- jf, 关注中 --------------------编程问答-------------------- 学习了

 

diy520 --------------------编程问答-------------------- 了解了一下..... --------------------编程问答-------------------- 新东西呢,学习了一下.呵呵...
不过据说挺好用的,关注... --------------------编程问答-------------------- mark --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 我对LINQ非常感兴趣 --------------------编程问答-------------------- 感谢LZ
继续学习~ --------------------编程问答-------------------- 感谢LZ --------------------编程问答-------------------- up --------------------编程问答-------------------- 感谢LZ
学习~ --------------------编程问答-------------------- 新东西呢,学习了一下感谢LZ  --------------------编程问答-------------------- 新东西呢,学习了一下感谢LZ  --------------------编程问答-------------------- up --------------------编程问答-------------------- 好好学习Linq,太有用了. --------------------编程问答-------------------- 刚装的08,正好学习一下 --------------------编程问答-------------------- 现在学习linq了,对数据的基本操作有所了解,希望和大家一起进步。
顶。 --------------------编程问答-------------------- 大家一起努力.顶!!! --------------------编程问答-------------------- 关注中 有待于学习啊  --------------------编程问答-------------------- 正在学习LINQ,赞一下LZ --------------------编程问答-------------------- 关注~! --------------------编程问答-------------------- 今天我又涨知识了
--------------------编程问答-------------------- 希望我们板块以后多一些这样的帖子,过两天有时间了我也会写一些LINQ知识的文章 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 学习
--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 顶LZ
LZ的帖子非常受用
希望LZ以后多多发帖
小弟  支持```
up --------------------编程问答-------------------- 正好今天在看LINQ,接分。 --------------------编程问答-------------------- 学习学习,顶一下 --------------------编程问答-------------------- 你喜欢网络设计吗?你想让周围充满这样的人吗?这里有一个属于我们山东人的网络群,欢迎加入呀:山东Cisco学习群60470186 --------------------编程问答-------------------- 正在学习linq,关住中。。。 --------------------编程问答-------------------- up --------------------编程问答-------------------- Hi 我是猎头Frank,目前手头有些不错的.NET Senior和PM的职位,如有兴趣.可以加我MSN或电话聊.

    sessior@hotmail.com
    13916394366 --------------------编程问答-------------------- 顶了 --------------------编程问答-------------------- 学习中... --------------------编程问答--------------------          jf --------------------编程问答-------------------- up --------------------编程问答-------------------- mark --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 好东西 --------------------编程问答-------------------- 看见分多就进来了 JF --------------------编程问答-------------------- 正在学习中。。 --------------------编程问答-------------------- 呵呵,用Linq已经一个两个多星期了,觉得非常好用! --------------------编程问答-------------------- 学习中~ --------------------编程问答-------------------- 额。学习。 --------------------编程问答-------------------- 新的
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,