2014-02-13 59 views
2

我想使用C#LINQ查詢和最低和最高價格返回表我的數據表。例如,波紋管表將按ItemNumber分組,然後由Cat1分組。對於產生的結果,我需要獲得集團的最低和最高價格。複雜組與lambda

ItemNumber Cat1 Low Price High Price 
100   Item1 1   10 
150   Item2 2   11 
100   Item1 2   12 
150   Item2 5   18 

結果

ItemNumber Cat1 Low Price High Price 
100   Item1 1   12 
150   Item2 2   18 

回答

2

假設結果是另一個DataTable與所聚集的數據:

var aggrTable = table.Clone(); // schema only 
var groups = table.AsEnumerable() 
    .GroupBy(r => new { ItemNumber = r.Field<int>("ItemNumber"), Cat1 = r.Field<string>("Cat1") }); 
foreach(var group in groups) 
{ 
    DataRow row = aggrTable.Rows.Add(); 
    row.SetField("ItemNumber", group.Key.ItemNumber); 
    row.SetField("Cat1", group.Key.Cat1); 
    row.SetField("Low Price", group.Min(r => r.Field<int>("Low Price"))); 
    row.SetField("High Price", group.Max(r => r.Field<int>("High Price"))); 
} 

結果表(與樣品數據測試):

ItemNumber Cat1  Low Price High Price 
     100   Item1   1   12 
     150   Item2   2   18