LINQ to SQL学习笔记(三)——聚集函数(一)

  本篇将介绍五个聚集函数的使用,分别是Count、Sum、Min、Max、Avg,这些函数的使用和我们在SQL命令中的使用场景是一样的,都是用于统计数据,求个数,求和,求最小值,求最大值,求平均数。

1、Count函数

   Count函数的作用是获得集合中元素的个数,返回值类型是int类型,转换成SQL语句如下

1
SELECT COUNT(*) FROM TABLENAME

  Count函数的使用方式也包括两种,分别是无参形式和有参形式。  

(1)无参形式

   使用无参形式我们可以获得集合中所有对象的数量,例如:

1
int count = db.Students.Count();

  上面语句将获得所有学生的总数。

(2)有参形式

   有参形式相当于根据参数条件做了一个额外的筛选,然后返回筛选之后的结果集合的对象数量。例如:

1
int count = db.Students.Count(stu=>stu.Age>20);

  上面语句将获得所有年龄大于20的学生的总数。

补充:

  除了使用Count函数可以获得集合中的元素个数外,我们还可以使用LongCount函数,它与Count的不同在于,它的返回值类型是long类型,用于集合中元素个数相对较多的情况下。

2、Sum函数

   Sum函数的作用是获得集合中数值类型的元素的总和,对应的SQL语句如下

1
SELECT SUM(COLNAME,...) FROM TABLENAME

  Sum函数的使用方式也包括两种,分别是无参形式和有参形式。

(1)无参形式

  使用无参形式必须先确定出要进行求和计算的列,然后调用Sum函数。例如:

1
var sum = db.Students.Select(stu=>stu.Age).Sum();

  上面语句将获取所有学生的年龄总和(本例在实际应用中没有实际意义)。

(2)有参形式

  使用有参形式就可以在参数中确定要进行求和的列。例如:

1
var sum = db.Students.Sum(stu=>stu.Age);

  上面语句上面语句同样能获取所有学生的年龄总和

3、Min函数

   Min函数的作用就是获得集合中元素的最小值,类似于SQL语句:

1
SELECT MIN(COLNAME...) FROM TABLENAME

  Min函数的使用方式也包括两种,分别是无参形式和有参形式。

(1)无参形式

  使用无参形式必须先确定出要进行求最小值的列,然后调用Min函数。例如:

1
var min = db.Students.Select(stu=>stu.Age).Min();

  上面语句将获取所有学生中最小的年龄。

(2)有参形式

  使用有参形式就可以在参数中确定要进行求最小值的列。例如:

1
var min = db.Students.Min(stu=>stu.Age);

  上面语句上面语句同样能获取所有学生中最小的年龄。

4、Max函数

   Max函数的作用就是获得集合中元素的最大值,类似于SQL语句:

1
SELECT MAX(COLNAME...) FROM TABLENAME

  Max函数的使用方式也包括两种,分别是无参形式和有参形式。

(1)无参形式

  使用无参形式必须先确定出要进行求最大值的列,然后调用Max函数。例如:

1
var max = db.Students.Select(stu=>stu.Age).Max();

  上面语句将获取所有学生中最大的年龄。

(2)有参形式

  使用有参形式就可以在参数中确定要进行求最大值的列。例如:

1
var max = db.Students.Max(stu=>stu.Age);

  上面语句上面语句同样能获取所有学生中最大的年龄。

5、Avg函数

   Avg函数的作用就是获得集合中元素的平均值,返回值类型是double,类似于SQL语句:

1
SELECT AVG(COLNAME...) FROM TABLENAME

  Avg函数的使用方式也包括两种,分别是无参形式和有参形式。

(1)无参形式

  使用无参形式必须先确定出要进行求平均值的列,然后调用Avg函数。例如:

1
var avg = db.Students.Select(stu=>stu.Age).Avg();

  上面语句将获取所有学生的平均年龄。

(2)有参形式

  使用有参形式就可以在参数中确定要进行求平均值的列。例如:

1
var avg = db.Students.Avg(stu=>stu.Age);

  上面语句上面语句同样能获取所有学生的平均年龄。

原文地址:https://www.cnblogs.com/xiaogui9527/p/2982317.html