LinQ Sum Distinct Values 数量和总数

Art*_*nez 4 c# sql 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
Run Code Online (Sandbox Code Playgroud)

我需要的是一个 Linq 语句,它根据作为我的主键的“Pla”数据对每个项目的所有“数量”进行求和,我想知道每个不同的“Pla”有多少“数量”,并求和每个不同的“Pla”的总和产生如下输出:

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
Run Code Online (Sandbox Code Playgroud)

如何使用 Linq 语句获得此输出?到目前为止,我所拥有的只是:

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

Muj*_*sir 5

您需要使用 groupby

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

GroupBy 将键返回为不同的,因此您将获得 Pla 的不同值及其各自数量的总和