C#LINQ groupby(),按重复值分组

时间:2015-02-27 22:43:55

标签: c# asp.net entity-framework group-by

我正在使用Entity Framework和LINQ。 我有一个名为“DatosCalc”的列表,它是从按日期和标识符输入过滤获得的,并按日期基数排序。 以下代码:

    List<Registro> datosCalcA = new List<Registro>(); 
    MonitoreoEntities _context = new MonitoreoEntities();

   datosCalcA= _context.Registroes.Where(a => a.PuntoDeMedicionId == pPuntoDeMedicionId
                      && a.EntradaSalidaId == _operadorA
                      || a.EntradaSalidaId == _operadorB
                      && a.FechaHoraRegistro <= _fechaHoraFinal
                      && a.FechaHoraRegistro >= _fechaHoraInicial).OrderBy(i => i.FechaHoraRegistro).ToList();

我明白了:

FechaHoraRegistro 12/05/2014 1:52:07 PM} {System.DateTime
ID 1 decimal
Decimal value 29

FechaHoraRegistro 12/05/2014 1:52:07 PM} {System.DateTime
ID 2 decimal
Decimal value 24

FechaHoraRegistro 12/05/2014 2:03:14 PM} {System.DateTime
ID 1 decimal
Decimal value 24

FechaHoraRegistro 12/05/2014 2:03:14 PM} {System.DateTime
ID 2 decimal
Decimal value 25
.............
+ Raw View
+ DatosCalcA Count = 2767 System.Collections.Generic.List <SystemaControl.Registro>

要按日期分组,我使用GroupBy()

创建一个新列表
newList var = datosCalcA.GroupBy (i => i.FechaHoraRegistro) .ToList ();

在这种情况下,正确地给我带来日期,newList我有日期,但不是值和需要。我得到的是按日期分组的列表

FechaHoraRegistro 12/05/2014 1:52:07 PM} {System.DateTime
Decimal value 29
Decimal value 24

FechaHoraRegistro 12/05/2014 2:03:14 PM} {System.DateTime
Decimal value 24
Decimal value 25

原谅我的英文

这解决了这个问题,我看起来很糟糕,它运行正常。 谢谢

1 个答案:

答案 0 :(得分:0)

您需要将.Select()添加到数据中

var newData =  datosCalcA.GroupBy (i => i.FechaHoraRegistro).Select (x => new {  values =  x.Sum(y => y.value)}).ToList ();