適用場景:統計資料吧,比如統計一些資料的個數,求和,最小值,最大值,平均數。
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
說明:根據輸入的運算式獲取聚合值;不延遲。
即是說:用一個種子值與當前元素通過指定的函數來進行對比來遍歷集合中的元素,符合條件的元素保留下來。如果沒有指定種子值的話,種子值預設為集合的第一個元素。
留言列表