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

適用場景:統計數據吧,好比統計一些數據的個數,求和,最小值,最大值,平均數。數據庫

Count

說明:返回集合中的元素個數,返回INT類型;不延遲。生成SQL語句爲:SELECT COUNT(*) FROM函數

1.簡單形式:spa

獲得數據庫中客戶的數量:code

var q = db.Customers.Count();

2.帶條件形式:blog

獲得數據庫中未斷貨產品的數量:產品

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

LongCountit

說明:返回集合中的元素個數,返回LONG類型;不延遲。對於元素個數較多的集合可視狀況能夠選用LongCount來統計元素個數,它返回long類型,比較精確。生成SQL語句爲:SELECT COUNT_BIG(*) FROMclass

var q = db.Customers.LongCount();

Sum

說明:返回集合中數值類型元素之和,集合應爲INT類型集合;不延遲。生成SQL語句爲:SELECT SUM(…) FROMselect

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

說明:根據輸入的表達式獲取聚合值;不延遲。便是說:用一個種子值與當前元素經過指定的函數來進行對比來遍歷集合中的元素,符合條件的元素保留下來。若是沒有指定種子值的話,種子值默認爲集合的第一個元素。

相關文章
相關標籤/搜索