LINQ
Linq查询知识点详解
Linq标准查询语法格式
var data = from 变量 in 集合对象
where 布尔表达式
orderby 排序字段 descending|ascending
select 变量;
解释:
select:提取要查询的数据 where:筛选满足条件的元素
from 变量:该变量指代集合中的单个元素 in:从哪里筛选元素
orderby:排序 descending:降序 ascending:升序
注意:where是可选的,如果不加where则表示筛选所有元素.
示例代码:
使用Linq进行数据查询的条件
数据源(in 后面的集合对象)必须直接或间接继承自IEnumerable<T>
或者说:只要数据源继承自IEnumerable<T>,我们就可以使用Linq从它里面检索数据
Where关键字
筛选满足条件的元素,where关键字后面一定要跟布尔表达式
Where后面的布尔表达式可以很简单,也可以是复杂的表达式.
注意:
注意from关键字后面可以出现多个where表达式,这些表达式之间是并且的关系
Select关键字
Select关键字用于提取要查询的数据.
Select后面可以直接跟from后面的变量;也可以跟一个匿名类型.
Count()方法
Count(expression<Func<T, bool>>)
解释:T代表Lambda表达式中的参数部分,bool代表Lambda表达式部分为布尔类型
Count方法用于获取满足条件的记录数量(有多少个满足条件的记录)
Max()和Min()
Max(Expression<Func<T, K>>)和Min(Expression<Func<T, K>>)
Max:求最大值 Min:求最小值
First()和FirstOrDefault()
First(Expression<Func<T, bool>>)
FirstOrDefault(Expression<Func<T, bool>>)
两个方法都是从集合中筛选满足条件的第一个元素.
区别:当没有从集合中筛选到满足的条件的元素时,First将会报错,FirstOrDefault则不会报错.
Average()方法
该方法用于计算平均值
Linq的联合查询
将两个集合进行关联,然后从这两个集合中提取所需要的数据.
语法格式:
var data = from 变量1 in 集合1
from 变量2 in 集合2
where 变量1.属性 == 变量2.属性
select new { ... ...}
提示:可以将N个集合进行关联(N>=2)
示例代码:
Sum()
Sum(Func<T, K>)
其中T为参数的类型,K为返回值的类型.
Sum()方法用于对数据进行求和运算.
OrderBy()和OrderByDescending()
这两个方法用于实现对数据进行排序(升序和降序)
group by分组
分组的标准语法:
var data = from 变量1 in 集合对象
group 变量1 by 变量1.属性 into 变量2
select 变量2;
注意:使用group by分组后,将不能使用之前的变量1,需要通过into关键字定义一个新的变量2.新的变量指代的是分组后的每一组.
关于分组的示例
其他:
在进行数据查询时,.net framework为我们提供了2套方案:
一种是使用标准的linq查询语法=>
(from\in\select\where\orderby\ascdening\descending\group\by\into\join);
另一种方案是使用扩展方法=>
(Where\Select\FirstOrDefault\Count\Sum\Average\Max\Min\OrderBy\OrderByDescending\GroupBy\Last\LastOrDefault)
当然,我们也可以将2种混合起来使用.
ending......