一、LINQ查询表达式
LINQ查询表达式使用C#常见的语言构造,和SQL类似, 由一个或多个LINQ查询子句按照一定的规则组成。作用就是从给定一个或多个数据源中,按照指定的条件检索数据,检索出的结果按找指定类型或表现形式返回。LINQ的数据源可以是数据库对象或是XML流等,也可以使实现了IEnumerable或者泛型IEnumberable<T>接口的集合对象。
二、LINQ查询八大子句
from...in | 指定查询操作的范围变量和数据源 |
select | 指定查询结果的类型和表现形式 |
where | 筛选元素的逻辑条件,一般由逻辑运算符组成 |
group...by | 对查询结果按照键值进行分组 |
into | 提供一个标识符,充当对join、group或select子句结果的引用 |
orderby | 对查询出的元素进行排序,可以升序或降序 |
join | 连接多个查询ca |
let | 产生一个用于存储查询表达式中的子表达式查询结果的范围变量 |
三、八大子句常用查询语句写法
from...in子句
每个LINQ查询语句都是以from子句开始,from子句包括以下两个功能:
●指定查询将采用的数据源
●定义一个本地变量,表示数据源中的单个元素
如: from localval in datasource
一般情况下,不用为from子句的localval元素指定数据类型,编译器会根据数据源类型为它分配合适的类型,通常为IEnumerable<T>中的类型T。
select子句
LINQ表达式中的查询结果,是使用select子句获得的。select子句还可以进行数据转换 工作,这个 过程称作”投影“,select子句产生的内容,取决于前面所有子句和其自身的表达式执行结果。
where子句
where子句,它是LINQ表达式的元素筛选机制,除了开始和结束的位置,它几乎可以出现在LINQ表达式的任意位置上。在一个LINQ表达式中,可以有where子句,也可以没有;可以有一个,也可以有多个;多个where子句之间的逻辑关系相当于逻辑“与”,每个where子句可以包含1个或多个bool逻辑表达式,这些条件成为谓词,谓词逻辑之间用的是“&&”“||”等而不是SQL中的and 、or。
group...by子句
按照语法规定,LINQ表达式必须以from子句开头,以select或group子句结束,所以除了使用select来返回结果外,也可以使用group子句来返回元素元素分组后的结果。group子句返回的是一个基于IGouping<Tkey,TElement>泛型接口的对象序列。分组查询是关系型数据库中非常常见的一种操作,但在没有使用LINQ以前,对内存对象进行分组查询是比较麻烦的一件事,现在,在LINQ表达式中只需要使用group子句就可以轻松完成对内存对象的分组。
orderby子句
LINQ的排序子句中还有ascending关键字,它是升序关键字,默认可以省略。orderby关键字后面可以有多个排序条件,每个条件用逗号分隔,ascending升序关键字、descending降序关键字可以跟任何条件匹配一次或多次。
join子句
如果一个数据源中元素的某个属性可以跟另外一个数据源的中元素的某个属性进行相等比较,那么这两个数据源可以用join子句进行关联。join子句使用equals关键字进行相等比较,而不是常用的双等号。
let子句
let语句用于 在LINQ表达式中存储子表达式的计算结果。let子句创建一个范围变量来 存储结果,变量被创建后,不能修改或办其他表达式的结果重新赋值给它,此范围变量可以在后继的LINQ子句中 使用。
into子句
into子句 作为一个临时标识符,用于group、select、join子句中。into子句提供了一个临时标识符,它存储了into子句前面的查询内容,使它后面的子句可以方便地使用,对齐进行再次查询或排序、投影等操作。