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 

    }; 

     

    Aggregate 

     

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

    select p2 

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

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

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

  • 相关阅读:
    POJ 1681 Painter's Problem(高斯消元法)
    HDU 3530 Subsequence(单调队列)
    HDU 4302 Holedox Eating(优先队列或者线段树)
    POJ 2947 Widget Factory(高斯消元法,解模线性方程组)
    HDU 3635 Dragon Balls(并查集)
    HDU 4301 Divide Chocolate(找规律,DP)
    POJ 1753 Flip Game(高斯消元)
    POJ 3185 The Water Bowls(高斯消元)
    克琳:http://liyu.eu5.org
    WinDbg使用
  • 原文地址:https://www.cnblogs.com/shuaichao/p/3168570.html
Copyright © 2011-2022 走看看