021 LINQ
2016-06-14 22:26:34 0 举报
AI智能生成
LINQ(Language Integrated Query,语言集成查询)是.NET Framework 3.5中的一项新特性,它提供了一种新的方法来访问和操作数据。LINQ可以用于各种数据源,包括关系型数据库、XML文档、ADO.NET数据集以及任何实现了IEnumerable接口的对象集合。通过使用LINQ,开发人员可以使用类似于SQL的语法来查询数据,而无需编写繁琐的数据访问代码。此外,LINQ还提供了丰富的查询操作符,如过滤、排序、分组等,使得数据操作更加简便高效。总之,LINQ为.NET开发人员提供了一个强大且灵活的工具,帮助他们更轻松地处理各种数据源。
作者其他创作
大纲/内容
LINQ定义
LINQ代表语言集成查询(Language Integrated Query)
LINQ是.NET框架的扩展,它允许一数据库查询的方式查询数据集合
C#3.0包含整合LINQ到语言中的一些扩展,允许我们从数据库、程序对象集合以及XML文档中查询数据
LINQ提供程序
对于每一种数据源类型,在其背后一定有根据给数据源类型实现LINQ查询的代码模块,这些代码模块叫做LINQ提供程序(provider)
要点
微软提供常见数据源类型的一些LINQ提供程序
可以使用任何支持LINQ的语言类查询有LINQ提供程序的数据源类型
第三饭在不断提供正对各种数据源类型的linq提供程序
匿名类型
只能和局部变量配合使用,不能用于类成员
由于匿名类型没有名字,必须使用var关键词作为变量类型
查询语法和方法语法
定义
查询语法(query syntax):是声明形式的,看上去和SQL语法很相似,查询语法使用查询表达式形式书写
方法语法(method syntax): 是命令形式的,它使用的是标准的方法调用,方法是一组叫做标准查询运算符的方法
在一个查询中也可组合两种形式
查询表达式的结构
注意
子句必须按照一定的顺序出现
from子句和select_group子句这两部分是必须的
其他子句是可选的
在LINQ查询表达式中,select子句在表达式最后
可以有任意多的from...let...where子句
from子句
要点
迭代变量有序表示数据源的每一个元素
from子句的语法:From Type Item in Items
Type是集合中元素的类型。
Item是迭代变量的名字
Items是要查询的集合的名字。集合必须是可枚举的
from子句和foreach语句的不同点
foreach语句在遇到代码时就执行其主体,而from子句什么也不执行。它创建一个用于保存查询变量的可枚举对象
foreach语句明确指定集合中的项需要按照次序,从第一个到最后一个。而from子句只是声明性地规定类必须考虑集合中的每一个项,但是不规定其顺序
jion子句
语法
联结操作接受两个集合然后创建一个临时的对象集合,每一个对象包含原始集合对象中的所有字段
使用连接来结合两个或更多集合中的数据P376
from...let...where片段
from子句
查询表达式从必须的from字句开始,后面跟的是查询主题
主题本身可以从任何数量的其他from子句开始,每一个from子句都制定了一个额外的数据集合并引物了要在之后运算的迭代变量,所有from子句的语法和含义都是一样的
let子句
概念:let子句接收一个表达式的运算并且把它赋值给一个需要在其他运算中使用的标识符。
语法: let Idengifier=Expression
where子句
只要是在from...let...where部分中,查询表达式可以有任何多个where子句
一个项必须满足where子句才能避免在之后被过滤
orderby子句
orderby子句的默认排序是升序,可以使用ascending和descending关键词显示地设置元素的培训为升序或者降序
可以有任意多个子句,它们必须使用逗号分离
select...group子句
select子句制定所选对象的哪部分应该被select,它可以制定:
整个数据项
数据项的一个字段
数据项中几个字段组成的新对象
group...by子句是可选的,用来制定选择的项如何被分组
查询中的匿名类型
group子句
如果项包含在查询的结果中,它们就可以根据某个字段的值进行分组。作为分组的依据的项叫做键(key)
和select子句不同,group子句不从原始的数据源中返回可枚举项的可枚举类型,二师返回可以枚举已经形成的项的分组的可枚举类型
分组本身是可枚举类型,它们可以枚举实际的项
标准查询运算符
标准查询运算符由一系列叫做API的方法组成,能查询任何.NET数组或集合。
被查询的集合对象叫做序列,它必须实现IEnumerable接口,T是类型
标准查询的运算符使用方法语法
一些运算返回IEnumerable对象,而其他的一些运算符返回标量。
标准查询运算符
限制:根据选择的标准返回序列对象的子集
映射:选择最终返回序列对象的那些部分
分隔:从序列跳过或返回对象
联结:根据一些标准,返回联接两个序列的IEnumerable对象
合成:从两个单独的序列产生一个序列
排序:根据提供的标准序列排序
分组:根据提供的标准分组序列
设置:在序列上进行设置操作
转换:吧序列转化为数组、列表以及字典等各种形式
判等:判断两个序列是否相等
元素:返回序列中的特定元素
生成:生成序列
量化:返回一个指定某个谓词对于序列是否为true的布尔值
聚合:返回一个表示序列特性的单一值
标准查询和运算符的签名
由于运算符是泛型方法,它们有它们的名字和相关联的泛型参数
由于运算符是扩展IEnumerable的扩展方法,它们必须满足:
声明为public和static
在第一个参数前有this扩展指示器
把IEnumerable作为第一个参数
LINQ预定义的委托类型
0 条评论
下一页