LINQ基本子句

LINQ基本子句

  出于工作需要,准备把LINQ的相关知识梳理一遍,希望能填补下之前学习漏掉的或是没有注意的地方,也为未来减轻压力~

LINQ查询表达式的基本语法很容易掌握,它使用C#常见的语言构造,从外观上看,和我们常用的SQL类似,并且查询表达式中的变量可以用匿名类型,所以在很多情况下,不需要指定变量类型就可以构建LINQ表达式。

LINQ的数据源可以是数据库对象或是XML流等,也可以使实现了IEnumerable或者泛型IEnumberable<T>接口的集合对象。

LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下:

关键字 说明
from 指定范围变量和数据源
where 根据bool表达式从数据源中筛选数据
select 指定查询结果中的元素所具有的类型或表现形式
group 对查询结果按照键值进行分组(IGrouping<TKey,TElement>)
into 提供一个标识符,它可以充当对join、group或select子句结果的引用
orderby 对查询出的元素进行排序(ascending/descending)
join 按照两个指定匹配条件来Equals连接两个数据源
let 产生一个用于存储查询表达式中的子表达式查询结果的范围变量

下面依此总结这8个关键字的常用查询语句写法。

1.from子句

如果要写一个LINQ表达式,就必须是以from子句开头。个人觉得from子句中需要注意的地方就是多个from子句的书写。

复制代码

复制代码

程序的运行结果如下:

程序中列举了from子句的用法示例,注意复合from子句和多个from子句的书写,同时需要理解范围变量和数据源变量这两个概念。

 2.where子句

where子句,它是LINQ表达式的元素筛选机制,除了开始和结束的位置,它几乎可以出现在LINQ表达式的任意位置上。

在一个LINQ表达式中,可以有where子句,也可以没有;可以有一个,也可以有多个;多个where子句之间的逻辑关系相当于逻辑“与”,每个where子句可以包含1个或多个bool逻辑表达式,这些条件成为谓词,谓词逻辑之间用的是“&&”“||”等而不是SQL中的and 、or。

复制代码

复制代码

需要注意一些常用的where子句的写法。程序的运行结果如下:

 3.Select子句

在select子句上可以非常灵活的处理查询到的元素,然后再把结果返回。

复制代码

复制代码

程序的运行结果如下:

 4.group子句

根据语法的规定,LINQ表达式必须以from子句开头,以select或group子句结束,所以除了使用select来返回结果外,也可以使用group子句来返回元素分组后的结果。

group子句返回的是一个基于IGrouping<TKey,TElement>泛型接口的对象序列。

语法和SQL的group有点区别,不注意的话可能会写错。

复制代码

复制代码

程序的运行结果如下:

 5.into子句

into子句作为一个临时标识符,用于group、select、join子句中充当其结果的引用。

复制代码

复制代码

程序运行结果如下:

6.orderby子句、thenby子句

LINQ可以按照元素的一个或多个属性对元素进行排序。

复制代码

复制代码

程序运行结果如下:

 7.let子句

let子句用于在LINQ表达式中存储子表达式的计算结果。

复制代码

复制代码

程序的运行结果如下:

8.join子句

如果一个数据源中元素的某个属性可以跟另外一个数据源的中元素的某个属性进行相等比较,那么这两个数据源可以用join子句进行关联。

join子句使用equals关键字进行相等比较,而不是常用的双等号。

复制代码

复制代码

程序结果如下:

以上就是LINQ的基本子句的常用用法,文字不是很多,因为代码中都有详细的注释说明。其他的一些查询运算符,将在后面几篇博文中陆续总结~~

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!