3

我在列表中有以下值

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 
4

3 回答 3

3
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,
             };
于 2013-02-14T18:31:15.887 回答
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);
于 2013-02-14T17:59:59.877 回答
0

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

于 2013-02-14T18:08:25.187 回答