如何在一个子句中写“ group by” +“ sum”?

时间:2019-06-09 13:21:09

标签: c# linq sum aggregate

我有

的样本数据
IEnumerable<Employee> ie;

员工在其中包含“姓名,工资,部门编号”的地方

我可以使用2个子句按部门ID进行分组,它们将for循环中的每个组“求和”,如下所示:

        var group3 = ie.GroupBy(x => x.Department_id);
        foreach (var g in group3)
        {
            Console.WriteLine(g.Sum(x=>x.Salary));
        }

是的,它可以工作,但是我可以简化我的代码吗?我的意思是,如何摆脱foreach循环,仅在linq语句中计算出Sum()并写为:

var group3 = from e in ie group e by e.Department_id xxxxxxxxx Sum xxxxx

该语句如何写?谢谢。

1 个答案:

答案 0 :(得分:3)

var results =  ie.GroupBy(x => x.Department_id).Select(g => g.Sum(x => x.Salary));

 foreach (var item in result)
 {
     Console.WriteLine(result);
 }

OR

ie.GroupBy(x => x.Department_id).Select(g => g.Sum(x => x.Salary))
            .ToList().ForEach(x => Console.WriteLine(x));