使用場景
類似於SQL中的聚合函數,用於統計數據,不延遲。如返回序列中的元素數量、求和、最小值、最大值、求平均值。
Count
說明:用於返回集合中元素的個數,返回Int類型,生成SQL語句為SELECT COUNT(*) FROM
1. 簡單形式
返回訂單數量。
var q = context.Orders.Count();
2. 條件形式
返回中客戶為倫敦的數量。
var q = context.Customers.Count(p => p.City == "London");
LongCount
說明:用於返回集合中元素的個數,返回Long類型,不延遲,可用於返回元素個數比較的集合,可視情況可以用LongCount來統計元素個數,返回Login類型比較精確。生成的SQL語句為SELECT COUNT_BIG(*) FROM。
var q = context.Customers.LongCount();
Sum
說明:用於返回集合數值類型元素之和,集合中的元素應為INT類型。不延遲。生成SQL語句為SELECT SUM(...) FROM
1. 簡單形式
返回訂單的總運費:
var q = context.Orders.Select(n => n.Freight).Sum();
2. 映射形式
返回商品的訂貨總數:
var q = context.Products.Sum(n => n.UnitsOnOrder);
Min
說明:返回集合中元素的最小值。不延遲。生成的SQL語句SELECT MIN(…) FROM
1. 簡單形式
返回商品價格最低的元素:
var q = context.Orders.Select(n => n.Freight).Min();
2. 映射形式
返回訂單中運費最低的元素:
var q = context.Orders.Min(o => o.Freight);
3. 組合形式
查找每個類別中單價最低的元素:
var q = from p in context.Products group p by p.CategoryID into t select new { CategoryID = t.Key, Cheapest = from p2 in t where p2.UnitPrice == t.Min(p3 => p3.UnitPrice) select p2 };
Max
說明:返回集合中元素的最大值。不延遲。生成的SQL語句為 SELECT MAX(*) FROM
1. 簡單形式
返回商品單價最大的元素:
var t = db.Products.Select(n => n.UnitPrice).Max();
2. 映射形式
var q = db.Products.Max(p => p.UnitPrice);
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
Avg
說明:用於返回集合中數值類型的平均值,集合應為數值類型集合。返回Double類型,不延遲。生成的SQL語句為SELECT AVG(...) FROM
1. 簡單形式
返回商品價格的平均值:
var t = db.Products.Select(p => p.UnitPrice).Average();
2. 映射形式
var t = db.Products.Average(p => p.UnitPrice);
3. 組合形式
查找每個類別中單價高於該類別平均單價的產品:
var t = from c in db.Products group c by c.CategoryID into g select new { CategoryID = g.Key, Price = from p in g where p.UnitPrice >= g.Average(n => n.UnitPrice) select p };