Linq使用Group By經驗總結

Linq使用Group By經驗總結

2009-09-08 16:02 佚名 IT168 我要評論(1) 字號: T | T
一鍵收藏,隨時查看,分享好友!

這裏介紹Linq使用Group By和Count獲得每一個CategoryID中產品的數量,Linq使用Group By和Count獲得每一個CategoryID中斷貨產品的數量等方面。架構

AD: 2013雲計算架構師峯會超低價搶票中函數

學習Linq時,常常會遇到Linq使用Group By問題,這裏將介紹Linq使用Group By問題的解決方法。學習

1.計數雲計算

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select new {  
  5. g.Key,  
  6. NumProducts = g.Count()  
  7. }; 

語句描述:Linq使用Group By和Count獲得每一個CategoryID中產品的數量。spa

說明:先按CategoryID歸類,取出CategoryID值和各個分類產品的數量。翻譯

2.帶條件計數xml

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select new {  
  5. g.Key,  
  6. NumProducts = g.Count(p => p.Discontinued)  
  7. }; 

語句描述:Linq使用Group By和Count獲得每一個CategoryID中斷貨產品的數量。htm

說明:先按CategoryID歸類,取出CategoryID值和各個分類產品的斷貨數量。 Count函數裏,使用了Lambda表達式,Lambda表達式中的p,表明這個組裏的一個元素或對象,即某一個產品。對象

3.Where限制ip

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. where g.Count() >= 10  
  5. select new {  
  6. g.Key,  
  7. ProductCount = g.Count()  
  8. }; 

語句描述:根據產品的―ID分組,查詢產品數量大於10的ID和產品數量。這個示例在Group By子句後使用Where子句查找全部至少有10種產品的類別。

說明:在翻譯成SQL語句時,在最外層嵌套了Where條件。

4.多列(Multiple Columns)

  1. var categories =  
  2. from p in db.Products  
  3. group p by new  
  4. {  
  5. p.CategoryID,  
  6. p.SupplierID  
  7. }  
  8. into g  
  9. select new  
  10. {  
  11. g.Key,  
  12. g  
  13. }; 

語句描述:Linq使用Group By按CategoryID和SupplierID將產品分組。

說明:既按產品的分類,又按供應商分類。在by後面,new出來一個匿名類。這裏,Key其實質是一個類的對象,Key包含兩個Property:CategoryID、SupplierID。用g.Key.CategoryID能夠遍歷CategoryID的值。

5.表達式(Expression)

  1. var categories =  
  2. from p in db.Products  
  3. group p by new { Criterion = p.UnitPrice > 10 } into g  
  4. select g; 

語句描述:Linq使用Group By返回兩個產品序列。第一個序列包含單價大於10的產品。第二個序列包含單價小於或等於10的產品。

說明:按產品單價是否大於10分類。其結果分爲兩類,大於的是一類,小於及等於爲另外一類。

相關文章
相關標籤/搜索