当前位置:主页   - 电脑 - 网站开发 - ASP.Net
LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg
来源:网络   作者:   更新时间:2012-08-03
收藏此页】    【字号    】    【打印】    【关闭

  [1] Count/Sum讲解

  [2] Min讲解

  [3] Max讲解

  [4] Average和Aggregate讲解

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

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

  Count

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

  1.简单形式:

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

var q = db.Customers.Count();2.带条件形式:

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

var q = db.Products.Count(p => !p.Discontinued);LongCount

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

var q = db.Customers.LongCount();Sum

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

  1.简单形式:

  得到所有订单的总运费:

var q = db.Orders.Select(o => o.Freight).Sum();2.映射形式:

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

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

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

var q = db.Orders.Min(o => o.Freight);3.元素:

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

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

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

var q = db.Products.Max(p => p.UnitsInStock);3.元素:

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

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

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

var q = db.Products.Average(p => p.UnitPrice);3.元素:

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

var categories =
  from p in db.Products
  group p by p.CategoryID into g
  select new {
    g.Key,
    ExpensiveProducts =
      from p2 in g
      where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)
      select p2
  };
Aggregate

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

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明