如何通过LINQ获得嵌套集合的总和

时间:2011-07-12 11:20:30

标签: linq

class YearlyData
{
    MonthlyData[] monthlyData = new MonthlyData[12];
}

class MonthlyData
{
    int Salary;
}

鉴于我有一个List<YearlyData>,我怎样才能找到给定月份的总薪水。 三年的例子我需要第一个月的总薪水和随后几个月。

2 个答案:

答案 0 :(得分:2)

如果你想要四月所有工资的总和:

List<YearlyData> l;
l.Sum(yd => yd.monthlyData[3].Salary);

如果我误解了你的问题,你真的想要四月份的所有工资。随后几个月(年内)

l.Sum(yd => yd.monthlyData.Skip(3).Sum());

答案 1 :(得分:0)

这样的事情:

list.SelectMany(x => x.monthlyData
                      .Select((m, i) => new {month = i+1, 
                                             data = m.Salary}
               ))
    .GroupBy(x => x.month)
    .Select(x => new {month = x.Key,
                      total = x.Sum(m => m.data)});

这将为您提供一个包含12个条目的列表,每个月一个,以及该月的总金额。