2016-02-26 64 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) 
});