c# - 使用 Linq 将相似值与列表相加

标签 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 

最佳答案

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,
             };

关于c# - 使用 Linq 将相似值与列表相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881052/

相关文章:

c# - linq lambda 如何在循环内工作?

c# - EF Core 2.0 中的 EnglishPluralizationService 在哪里?

C# control.find 解释

c# - 何时在 LINQtoObjects 上使用带有 lambda 的扩展方法来过滤集合?

c# - 使用 OR 运算符在 LINQ 表达式中添加 Between 子句

c# - 移动父变换时子变换不移动

c# - 我无法在 VS 中重命名文件名

c# - Linq 左加入组加入

c# - 如何将 LINQ 数据绑定(bind)到下拉列表

linq - 有没有人用 Lambda 语法完成过 Linq 101 示例?