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......

posted @ 2014-08-31 12:55  易墨  阅读(1023)  评论(1编辑  收藏  举报
Fork me on GitHub