LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg

30 篇文章 0 订阅

转载地址: http://www.prg-cn.com/article-4474-1.html

[1] Count/Sum讲解

[2] Min讲解

[3] Max讲解

[4] Average和Aggregate讲解

Count/Sum/Min/Max/Avg操作符

适用场景: 统计数据吧,比如统计一些数据的个数,求和,最小值,最大值,平均数。

Count

说明:返回集合中的元素个数,返回INT类型;不延迟。生成 SQL语句为:SELECT COUNT(*) FROM

1.简单形式:

得到数据库中客户 的数量:

  1. var q = db.Customers.Count();
复制代码

2.带条件形 式:

得到数据库中未断货产品的数量:

  1. var q = db.Products.Count(p => !p.Discontinued);
复制代码

LongCount

说明 :返回集合中的元素个数,返回LONG类型;不延迟。对于元素个数较多的集合可 视情况可以选用LongCount来统计元素个数,它返回long类型,比较精确。生成 SQL语句为:SELECT COUNT_BIG(*) FROM

  1. var q = db.Customers.LongCount();
复制代码

Sum

说明:返回集合中数值类型元素 之和,集合应为INT类型集合;不延迟。生成SQL语句为:SELECT SUM(…) FROM

1.简单形式:

得到所有订单的总运费:

  1. var q = db.Orders.Select(o => o.Freight).Sum();
复制代码

2.映射形式:

得 到所有产品的订货总数:

  1. var q = db.Products.Sum(p => p.UnitsOnOrder);
  2. Min
  3. 说明:返回集合中元素的最小值;不延迟。 生成SQL语句为:SELECT MIN(…) FROM
  4. 1.简单形式:
  5. 查找任 意产品的最低单价:
  6. var q = db.Products.Select(p => p.UnitPrice).Min();
复制代码

2.映射形式:

查找任意订单的最低运费:

  1. var q = db.Orders.Min(o => o.Freight);
复制代码

3.元素 :

查找每个类别中单价最低的产品:

  1. var categories =
  2.   from p in db.Products
  3.   group p by p.CategoryID into g
  4.   select new {
  5.     CategoryID = g.Key,
  6.      CheapestProducts =
  7.       from p2 in g
  8.        where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
  9.        select p2
  10.   };
  11. Max
  12. 说明:返回集合中元素的最大值;不延 迟。生成SQL语句为:SELECT MAX(…) FROM
  13. 1.简单形式:
  14. 查 找任意雇员的最近雇用日期:
  15. var q = db.Employees.Select(e => e.HireDate).Max();
复制代码

2.映射形式:

查找任意产品的最大库存量:

  1. var q = db.Products.Max(p => p.UnitsInStock);
复制代码

3.元素:

查找每个类别中单价最高的产品:

  1. var categories =
  2.   from p in db.Products
  3.    group p by p.CategoryID into g
  4.   select new {
  5.      g.Key,
  6.     MostExpensiveProducts =
  7.       from p2 in g
  8.       where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
  9.       select p2
  10.   };
  11. Average
  12. 说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回 值类型为double;不延迟。生成SQL语句为:SELECT AVG(…) FROM
  13. 1.简单形式:
  14. 得到所有订单的平均运费:
  15. var q = db.Orders.Select(o => o.Freight).Average();
复制代码

2.映射形式:

得到所有产品的平均单价:

  1. var q = db.Products.Average(p => p.UnitPrice);
复制代码

3.元素:

查找每个类别中单价高于该类别平 均单价的产品:

  1. var categories =
  2.   from p in db.Products
  3.   group p by p.CategoryID into g
  4.   select new {
  5.     g.Key,
  6.     ExpensiveProducts =
  7.        from p2 in g
  8.       where p2.UnitPrice > g.Average (p3 => p3.UnitPrice)
  9.       select p2
  10.    };
复制代码

Aggregate

说明:根据输入的表达式获取聚合值;不延迟。即 是说:用一个种子值与当前元素通过指定的函数来进行对比来遍历集合中的元素 ,符合条件的元素保留下来。如果没有指定种子值的话,种子值默认为集合的第 一个元素。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值