• 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 

    }; 

     

    Aggregate 

     

    where p2.UnitPrice > g.Average (p3 => p3.UnitPrice) 

    select p2 

    说明:根据输入的表达式获取聚合值;不延迟。即 是说:用一个种子值与当前元素通过指

    定的函数来进行对比来遍历集合中的元素 ,符合条件的元素保留下来。如果没有指定种子

    值的话,种子值默认为集合的第 一个元素。

  • 相关阅读:
    Python13_安装、解释器
    Python12_关于文件概念的讨论与序列化
    Python11_文件的读写
    which | whereis |locate |find
    tail命令 | head命令
    cat 命令|more命令|less命令
    数据库模型设计,第一范式、第二范式、第三范式简单例子理解
    json
    正则表达式
    SFTP相关命令
  • 原文地址:https://www.cnblogs.com/shuaichao/p/3168570.html
Copyright © 2020-2023  润新知