LINQ基础

LINQ概述

LINQ(Language-Integrated Query,语言集成查询)是微软公司提供的一项新技术,它能够将查询直接引入到.Net Framework 所支持的编程语言(如C#VB.NET等)中,可以为C#Visual Basic提供强大的查询功能。LINQ查询操作可以通过编程语言自身传达,而不是以字符串形式嵌入到应用程序代码中。LINQ引入了标准的、易于学习的查询和更新数据模式,可以对其技术进行扩展,以支持几乎任何类型的数据模型。

       LINQ是.Net Framework中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。LINQ主要由3部分组成,分别为LINQ to ObjectsLINQ to ADO.NETLINQ to XML。其中,LINQ to ADO.NET可以分为两部分,分别为LINQ to SQLLINQ to DataSet。LINQ的组成说明如下。

▶ LINQ to SQL组件:可以查询基于关系数据库的数据,并对这些数据进行检索、插入、修改、删除、排序、聚合和分区等操作。

▶ LINQ to DataSet组件:可以查询DataSet对象中的数据,并对这些数据进行检索、过滤和排序等操作。

▶ LINQ to Objects组件:可以查询Ienumerable或Ienumerable<T>集合,也就是说可以查询任何可枚举的集合,如数据(Array和ArrayList)、泛型列表List<T>、泛型字典Dictionary<T>以及用户自定义的集合,而不需要使用LINQ提供程序或API。

▶ LINQ to XML组件:可以查询或操作XML结构的数据(如XML文档、XML片段和XML格式的字符串等),并提供了修改文档对象模型的内存文档和支持LINQ查询表达式等功能,处理XML文档的全新编程接口。

         LINQ可以查询或操作任何存储形式的数,如对象(集合、数组、字符串等)、关系(关系数据库、ADO.NET数据集等)以及XML。LINQ架构如图所示。

LINQ查询

语言集成查询(LINQ)是一组技术的名称,这些技术建立在将查询功能直接集成到C#语言(以及Visual Basic和可能的任何其他.NET语言)的基础上。借助于LINQ,查询现在已是高级语言构造,就如同类、方法和事件等。

扫描二维码关注公众号,回复: 12800508 查看本文章

        对于编写查询的开发人员来说,LINQ最明显的“语言集成”部分是查询表达式。查询表达式是使用C#中引入的声明性查询语法编写的。通过使用查询语法,开发人员可以使用最少的代码对数据源执行复杂的筛选、排序和分组操作,使用相同的基本查询表达式模式来查询和转换SQL数据库ADO.NET数据集XML文档和流,以及.NET集合中的数据等。

        使用LINQ查询表达式时,需要注意以下几点。

▶ 查询表达式可用于查询和转换来自任意支持LINQ的数据源中的数据。例如,单个查询可以从SQL数据库检索数据,并生成XML流作为输出。

▶ 查询表达式容易掌握,因为它们使用许多常见的C#语言构造。

▶ 查询表达式中的变量都是强类型的,但许多情况下不需要显式提供类型,因为编译器可以推断类型。

▶ 在循环访问foreach语句中的查询变量之前,不会执行查询。

▶ 在编译时,根据C#规范中设置的规则将查询表达式转换为“标准查询运算符”方法调用。任何可以使用查询语法表示的查询都可以使用方法语法表示,但是多数情况下查询语法更易读和简洁。

▶ 作为编写LINQ查询的一项规则,建议尽量使用查询语法,只在必须的情况下才使用方法语法。

▶ 一些查询操作,如Count或Max等,由于没有等效的查询表达式子句,因此必须表示为方法调用。

▶ 查询表达式可以编译为表达式目录树或委托,具体取决于查询所应用到的类型。其中,IEnumerable<T>查询编译为委托,IQueryable和IQueryable<T>查询编译为表达式目录树。

LINQ查询表达式包含8个基本子句,分别为fromselectgroupwhereorderbyjoinletinto,其说明如表所示。

子    句

说    明

from

指定数据源和范围变量

select

指定当执行查询时返回的序列中的元素将具有的类型和形式

group

按照指定的键值对查询结果进行分组

where

根据一个或多个由逻辑“与”和逻辑“或”运算符(&&或||)分隔的布尔表达式筛选源元素

orderby

基于元素类型的默认比较器按升序或降序对查询结果进行排序

join

基于两个指定匹配条件之间的相等比较来连接两个数据源

let

引入一个用于存储查询表达式中的子表达式结果的范围变量

into

提供一个标识符,它可以充当对join、group或select子句的结果的引用

猜你喜欢

转载自blog.csdn.net/weixin_44684272/article/details/105529306
今日推荐