使用Linq将类似值与列表相加

时间:2013-02-14 17:54:17

标签: c# linq

我在列表中有以下值

Feb 13  100 
Feb 13  150 
Feb 13  127 
Feb 14  50

使用linq如何返回另一个列表,其中包含每个日期的总和,包括前几天的总数?

例如

Feb 13 357  (Sum of Feb 13)   
Feb 14 407  (Sum of Feb 14 + Sum of Feb 13)

有些唠叨

list= list.OrderBy(i => i.date)
                    .Distinct().Select(
                i =>
                    {
                        np+= i.rh;
                        nh+= i.hm;
                        return new Po
                            {
                                date= i.date,
                                NH =  nh,

                            };
                    }).ToList();

返回此列表:

Feb 13  100 
Feb 13  250 
Feb 13  377 
Feb 14  427

我想要

 Feb 13 357  
 Feb 14 407 

3 个答案:

答案 0 :(得分:2)

decimal runningTotal = 0;
var result = from item in items
             orderby item.Date
             group items by item.Date into grp
             let sum = items.Where(x => x.Date == grp.Key).Sum(x => x.Amount)
             select new
             {
                 Date = grp.Key,
                 Sum = runningTotal += sum,
             };

答案 1 :(得分:0)

如果你知道未来的价值,你可以尝试这样的事情

   var Total = listval.Sum(od => od.vall)+listval.where(od => od.date=="Feb 13").Sum(od =>
 od.vall)+listval.where(od => od.date=="Feb 14").Sum(od => od.vall);

答案 2 :(得分:0)

您可以通过对对象进行分组并在组中使用Sum来实现。 Mark发布的链接显示了如何做到这一点。