Find average salary of a department using LINQ

Foo*_*Foo 0 c# linq

How do I find the average salary for each department?

 var employees = new List<Employee>
                {
                    new Employee {Name = "Tom", Age = 32,Department = "Design",Salary=120000},
                    new Employee {Name = "John", Age = 22,Department = "UI",Salary=86000},
                    new Employee {Name = "Sandra", Age = 36,Department = "UI",Salary=83000},
                    new Employee {Name = "Julie", Age = 54,Department = "Javascript",Salary=80000},
                    new Employee {Name = "Samantha", Age = 21,Department = "Design",Salary=125000}
                };

var massagedEmployees = employees.GroupBy(e => e.Department).Select(g=>g.??????
Run Code Online (Sandbox Code Playgroud)

In SQL I would do something like

select Department,avg(salary) from Employees group by Department
Run Code Online (Sandbox Code Playgroud)

Kin*_*ing 6

var massagedEmployees = employees.GroupBy(e => e.Department)
                                 .Select(g=>g.Average(x=>x.Salary));
Run Code Online (Sandbox Code Playgroud)

你应该包括Department key这样的:

var massagedEmployees = employees.GroupBy(e => e.Department)
                                 .Select(g=> 
                                   new {
                                      Department = g.Key,
                                      SalaryAvg = g.Average(x=>x.Salary)
                                  });
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 6

您可以使用:

var massagedEmployees = employees.GroupBy(e => e.Department)
                                .Select(g => new { Department = g.Key, Avg = g.Average(e => e.Salary) } );
Run Code Online (Sandbox Code Playgroud)