我在MVC中使用我的模型创建一个组我设法得到我的3个主要值但我不知道如何在linq中为我的select添加更多数据。
这是我的Linq声明:
@foreach (var item in Model.GroupBy(a => a.Pla).Select(p => new { Pla = p.Key, Quantity = p.Sum(q => q.Cantidad), Total = p.Sum(x => x.Total) }))
这是我的表:
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
这为我提供了唯一的Pla
项以及Total
和Quantity
数据的总和,但我还需要显示另外3列desc
,{{1} }和Rid
我怎样才能将它们添加到我的Linq?
首先尝试
Pdv
这是我的第一次尝试,但我无法让它发挥作用,
答案 0 :(得分:1)
鉴于您的pla按键分组,每个组都有一个plas列表,带有一个唯一键,并且组中的所有plas都具有相同的Pdv,Description,Riv。
您实际上可以从已经提取的密钥中获取3个字段。
{
var pdv = item.Pla.Pdv; // etc.
listItemPopu.Add(item.ToString());
}
但是如果你不想这样做,因为你不能将sum应用于字符串字段,你需要对它们进行FirstOrDefault。
foreach (var item in db.Pos.GroupBy(a=> a.Pla).Select(p=> new
{
Pla = p.Key,
Pdv = p.Select(a => a.Pdv).FirstOrDefault(),
Nombre = p.Select(a => a.Description).FirstOrDefault(),
Rid = p.Select(a => a.Rid).FirstOrDefault(),
Quantity = p.Sum(q=>q.Cantidad),
Total= p.Sum(x=>x.Total)
}))
{
listItemPopu.Add(item.ToString());
}
如果您的3个字段来自广告本身,您也可以将其从密钥开始。
foreach (var item in db.Pos.GroupBy(a=> a.Pla).Select(p=> new
{
Pla = p.Key,
Pdv = p.Key.Pdv,
Nombre = p.Key.Description,
Rid = p.Key.Rid,
Quantity = p.Sum(q=>q.Cantidad),
Total= p.Sum(x=>x.Total)
}))
{
listItemPopu.Add(item.ToString());
}