2016-02-26 70 views
1

我有這個表:LinQ在總重複值數量和總

Con Fecha   Rid  Pdv Pla Descripcion  Total Quantity 
---------------------------------------------------------------------------- 
1  2016-01-01 COMIDAS FUEM 184 POZ ROJO   85  1 
10 2016-01-01 DESAYUNOS VTSI 184 POZ ROJO   85  4 
100 2016-01-01 COMIDAS VTSI 693 ENVASE 1 LT  10  1 
101 2016-01-01 DESAYUNOS REST 693 ENVASE 1 LT  10  2 
102 2016-01-01 COMIDAS VTSI 693 ENVASE 1 LT  10  1 
103 2016-01-01 COMIDAS REST 73 NOPAL/PIÑA VASO 34  6 
104 2016-01-01 DESAYUNOS REST 73 NOPAL/PIÑA VASO 34  1 
105 2016-01-01 DESAYUNOS REST 184 POZ ROJO   85  9 
106 2016-01-01 COMIDAS VTSI 693 ENVASE 1 LT  10  1 
107 2016-01-01 CENAS  REST 184 POZ ROJO   85  2 
108 2016-01-01 DESAYUNOS REST 184 POZ ROJO   85  1 

我需要的是一個LINQ語句概括所有的「數量的」基於對「解放軍」的數據是唯一的每個項目我的主鍵,我想知道有多少「量」每一個不同的「解放軍」已經和還總結導致輸出這樣總的每個不同的「解放軍」的:

Con Fecha   Rid  Pdv Pla Descripcion  Total Quantity 
---------------------------------------------------------------------------- 
1  2016-01-01 COMIDAS FUEM 184 POZ ROJO   1445 17 
100 2016-01-01 COMIDAS VTSI 693 ENVASE 1 LT   50  5 
103 2016-01-01 COMIDAS REST 73 NOPAL/PIÑA VASO  34  6 
104 2016-01-01 DESAYUNOS REST 73 NOPAL/PIÑA VASO  34  1 

我怎樣才能得到這個輸出用Linq聲明?所有我到現在爲止是:

foreach (var item in db.Pos.Select(l => l.Pla).Distinct()) 
{ 
     //Do stuff 
} 

回答

2

您需要使用GROUPBY

db.Pos.GroupBy(a=> a.Pla).Select(p=> new {Pla = p.Key, Quantity = p.Sum(q=>q.Quantity)}); 

的GroupBy返回爲不同的鍵,你會得到不同的值,解放軍各自的數量之和

1

:可以通過 Pla值和 SumTotal和該組中的每個元素的值 Quantity GroupBy元素
var plas = db.Pos.GroupBy(p => p.Pla).Select(g => new 
{ 
    Pla = g.Key, 
    Total = g.Sum(t => t.Total), 
    Quantity = g.Sum(t => t.Quantity) 
});