语言集成查询(
英语:Language Integrated Query,
缩写微软的一项
技术,新增一种自然查询的SQL语法到.NET Framework的编程语言中,当前可支持
C#以及
Visual Basic .NET语言。2007年11月19日随
.NET Framework 3.5发布了LINQ技术。
从技术角度而言,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) 。
匿名类型(Anonymous type)是C# 3.0与Visual Basic 9.0新增的功能,它允许开发人员可以使用不具类型的方式创建新的数据结构,而真正的类型在编译时期,由C# (或VB) Compiler自动产生,并写入编译目标文件中,它可以让开发人员能够很简单利用匿名类型创建对象,LINQ中的select指令即是利用这种特性来创建回传对象。
注:
C++/CLI尚未支持LINQ。但是有第三方的C++包,以及第三方的
PHP包
LINQ当前由
Visual Studio2008、2010、2012、2013、2015、2017支持。
微软同样提供了LINQExtender,允许用户在不了解LINQ实现细节的情况下,编写自己的LINQ扩展。 如:LINQ to Twitter,LINQ to Oracle,LINQ to Active Directory等。