• LINQ to SQL语句(2)Count/Sum/Min/Max/Avg操作符


    使用场景

    类似于SQL中的聚合函数,用于统计数据,不延迟。如返回序列中的元素数量、求和、最小值、最大值、求平均值。

    Count

    说明:用于返回集合中元素的个数,返回Int类型,生成SQL语句为SELECT COUNT(*)  FROM

    1.  简单形式

     返回订单数量。

     var q = context.Orders.Count(); 

    2. 条件形式

    返回中客户为伦敦的数量。

    var q = context.Customers.Count(p => p.City == "London");

     LongCount

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

     var q = context.Customers.LongCount();

    Sum

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

    1. 简单形式

    返回订单的总运费:

     var q = context.Orders.Select(n => n.Freight).Sum();

    2. 映射形式

    返回商品的订货总数:

     var q = context.Products.Sum(n => n.UnitsOnOrder);

    Min

    说明:返回集合中元素的最小值。不延迟。生成的SQL语句SELECT MIN(…) FROM

    1. 简单形式

    返回商品价格最低的元素:

     var q = context.Orders.Select(n => n.Freight).Min();

    2. 映射形式

    返回订单中运费最低的元素:

      var q = context.Orders.Min(o => o.Freight);

    3. 组合形式

    查找每个类别中单价最低的元素:

     var q = from p in context.Products
                            group p by p.CategoryID into t
                            select new
                            {
                                CategoryID = t.Key,
                                Cheapest = from p2 in t where p2.UnitPrice == t.Min(p3 => p3.UnitPrice) select p2
                            };

    Max

    说明:返回集合中元素的最大值。不延迟。生成的SQL语句为 SELECT MAX(*) FROM

    1. 简单形式

    返回商品单价最大的元素:

      var t = db.Products.Select(n => n.UnitPrice).Max();

    2. 映射形式

     var q = db.Products.Max(p => p.UnitPrice);

    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

    Avg

     说明:用于返回集合中数值类型的平均值,集合应为数值类型集合。返回Double类型,不延迟。生成的SQL语句为SELECT AVG(...) FROM 

    1. 简单形式

    返回商品价格的平均值:

    var t = db.Products.Select(p => p.UnitPrice).Average();

    2. 映射形式

     var t = db.Products.Average(p => p.UnitPrice);

    3. 组合形式

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

     var t = from c in db.Products
                            group c by c.CategoryID into g
                            select new
                                {
                                    CategoryID = g.Key,
                                    Price = from p in g where p.UnitPrice >= g.Average(n => n.UnitPrice) select p
                                };
  • 相关阅读:
    寒武纪芯片——有自己的SDK,支持tf、caffe、MXNet
    专车降价滴滴快车使命终结?
    滴滴代驾骑虎难下 司机1人23部手机刷单
    柳青:再见!滴滴打车 其实这里面都是故事
    “专车”监管意见最快本月公布
    不少专车司机考虑退出
    专车新规或下周发布,估计有大量司机流失
    英媒:滴滴和优步每年烧钱64亿
    约租车管理办法近期公布 数量或受地方政府管控
    Uber上海公司被司机打上门
  • 原文地址:https://www.cnblogs.com/liujie2272/p/6734156.html
Copyright © 2020-2023  润新知