【问题标题】:Summing similar values with a list using Linq [duplicate]使用 Linq 将相似值与列表相加 [重复]
【发布时间】:2013-02-14 17:54:17
【问题描述】:

我在

的列表中有以下值
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 

【问题讨论】:

  • 您是否已经尝试过我们可以讨论的内容?或者您正在等待其他人为您编写代码?

标签: c# linq


【解决方案1】:
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,
             };

【讨论】:

  • 谢谢!!!情人节快乐哈哈。
【解决方案2】:

如果你知道前面的值,你可以尝试这样的事情

   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);

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2019-06-28
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2020-08-13
      • 2016-11-02
      • 1970-01-01
      • 2014-09-21
      相关资源
      最近更新 更多