[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
where p2.UnitPrice > g.Average (p3 => p3.UnitPrice)
select p2
};
Aggregate
說明:根據輸入的表達式獲取聚合值;不延遲。即 是說:用一個種子值與當前元素通過指定的函數來進行對比來遍歷集合中的元素 ,符合條件的元素保留下來。如果沒有指定種子值的話,種子值默認為集合的第 一個元素。