语言集成查询(LINQ)是微软的一项技术。新增一种自然查询的SQL语法到.NET Framework的编程语言中,当前可支持C#以及Visual Basic .NET语言。
语言集成查询(英语:Language Integrated Query,缩写:LINQ),发音”link”,是微软的一项技术,新增一种自然查询的 SQL 语法到.NET Framework 的编程语言中,当前可支持 C#以及 Visual Basic .NET 语言。2007 年 11 月 19 日随.NET Framework 3.5 发布了 LINQ 技术。
包括 LINQ to Objects、LINQ to SQL、LINQ to Datasets、LINQ to Entities、LINQ to Data Source、LINQ to XML/XSD 等。
基本含义
从技术角度而言,LINQ 定义了大约 40 个查询操作符,如 select、from、in、where 以及 order by(C#中)。使用这些操作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的 LINQ 类型。
经过了最近 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) 。
包含 DLinq 和 XLinq。
语言风格
LINQ 新增了多项语言的风格,来展示出查询语言的扩展性,例如:C#:
匿名类型
匿名类型(Anonymous type)是 C# 3.0 与 Visual Basic 9.0 新增的功能,它允许开发人员可以使用不具类型的方式创建新的数据结构,而真正的类型在编译时期,由 C# (或 VB) Compiler 自动产生,并写入编译目标文件中,它可以让开发人员能够很简单利用匿名类型创建对象,LINQ 中的 select 指令即是利用这种特性来创建回传对象。
匿名类型本质上是表达元组(tuple),采用值语义。
下列使用匿名类型的代码:
会由编译器改写为:
标准查询运算符
LINQ 的各式言语支持度
下列的言语支持 LINQ。
C#3.0
F#1.1.8.1
Visual Basic 2008(9.0)
注:C++/CLI 尚未支持 LINQ。但是有第三方的 C++包,以及第三方的 PHP 包
LINQ 的示例
一个简单例子:
输出: 49 25 1
另一个例子:
Visual Studio 支持
LINQ 当前由 Visual Studio2008、2010、2012、2013、2015、2017 支持。
语言扩展
微软同样提供了 LINQExtender,允许用户在不了解 LINQ 实现细节的情况下,编写自己的 LINQ 扩展。 如:LINQ to Twitter,LINQ to Oracle,LINQ to Active Directory 等。