程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0入門系列(九)-之GroupBy操作(2)

C# 3.0入門系列(九)-之GroupBy操作(2)

編輯:關於C語言

這裡groupby的操作相對難理解些,主要原因,它包含了整個分組的具體信息,而不是簡單的求和,取平均值等。如果在最終結果中,也就是在select語句中,不包含g的全部信息,而只是g的聚合函數。又會是怎麼樣的一番風景呢?

GroupBy中的Max, Min, Sum, Average,Count

如果,只想取每類產品中,單價為最大,用T-sql該怎麼辦呢?是不是要這麼來寫

SELECT MAX([t0].[UnitPrice]) AS [MaxPrice], [t0].[CategoryID]
FROM [dbo].[Products] AS [t0]
GROUP BY [t0].[CategoryID]

我們來看看,dlinq如何來做同樣的事情.如下,先按CategoryID歸類,然後,只取CategoryID值和同類產品中單價最大的。

var q =
from p in db.Products
group p by p.CategoryID into g
select new {
 g.Key,
 MaxPrice = g.Max(p => p.UnitPrice)
};

在這裡,Max函數只對每個分組進行操作。我們來看看其結果

呀,這次,dlinq並沒有把組裡所有的紀錄都取出來的嗎。(請參考http://www.cnblogs.com/126/archive/2006/09/01/486388.Html一文中的方法,配置sample.) dlinq只是簡單做了統計,並返回結果。

每類產品中,單價為最小的,

var q =
from p in db.Products
group p by p.CategoryID into g
select new {
 g.Key,
 MinPrice = g.Min(p => p.UnitPrice)
};

每類產品的價格平均值

var q =
from p in db.Products
group p by p.CategoryID into g
select new {
 g.Key,
 AveragePrice = g.Average(p => p.UnitPrice)
};

每類產品,價格之和

var q =
from p in db.Products
group p by p.CategoryID into g
select new {
 g.Key,
 TotalPrice = g.Sum(p => p.UnitPrice)
};

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved