LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。
语言集成查询 (LINQ) 使开发人员能够在应用程序代码中形成基于集合的查询,而不必使用单独的查询语言。您可以编写针对各种可枚举数据源(即实现 IEnumerable 接口的数据源)的 LINQ 查询,可枚举数据源包括驻留在内存中的数据结构、XML 文档、SQL 数据库和 DataSet 对象等。
先看LINQ的架构图
首先了解LINQ查询基础操作,基础关键字,常用表达式包含8个常用子句,如from子句、where子句、select子句等。这些子句的具体说明如表4.1所示。
表4.1 LINQ查询表达式子句
子句 | 说明 |
from子句 | 指定查询操作的数据源和范围变量。 |
where子句 | 筛选元素的逻辑条件,一般由逻辑运算符(如逻辑“与”、逻辑“或”)组成。 |
select子句 | 指定查询结果的类型和表现形式。 |
orderby子句 | 对查询结果进行排序,可以为“升序”或“降序”。 |
group子句 | 对查询结果进行分组。 |
into子句 | 提供一个临时标识符。该标识可以充当对join、group或 select子句的结果的引用。 |
join子句 | 连接多个查询操作的数据源。 |
let子句 | 引入用于存储查询表达式中的子表达式结果的范围变量。 |
LINQ查询表达式必须以from子句开头,并且必须以select或group子句结束。在第一个from子句和最后一个select或group子句之间,查询表达式可以包含一个或多个where、orderby、group、join、let子句,甚至from子句。另外,join和group子句还可以使用into子句指定临时标识符号。
LINQ包括五个部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。
下面来一一示例理解。
* .NET 集合、文件、字符串等:LINQ to Objects
* ADO.NET 数据集: LINQ to DataSets
* SQL Server 数据库: LINQ to SQL
* LINQ to Entities
* XML 文档: LINQ to XML