我在列表中有以下值
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
答案 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发布的链接显示了如何做到这一点。