zoukankan      html  css  js  c++  java
  • LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg

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

    [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

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

  • 相关阅读:
    Redis大集群扩容性能优化实践
    INET_ATON(expr)
    无类别域间路由 Classless Inter-Domain Routing CIDR 可变长子网掩码 VLSM Variable Length Subnet Mask
    把[]byte转成string
    不用 H5,闲鱼 Flutter 如何玩转小游戏?
    重度使用Flutter研发模式下的页面性能优化实践
    Flutter 打包与转译 编译 Flutter 即将占领整个 Web 开发
    interface {} is uint, not []uint8
    MySQL查看数据库性能常用命令_Running_Tiger的博客-CSDN博客_mysql 查看数据库 https://blog.csdn.net/qq_41455420/article/details/82802090
    vivo全球商城时光机
  • 原文地址:https://www.cnblogs.com/liubo/p/2381544.html
Copyright © 2011-2022 走看看