使用 LINQ 选择每个部门收入最高的员工

slo*_*ace 4 c# linq

不太确定如何措辞,但基本上我在列表中有一堆与此类似的数据:

人 1

姓名 - Joe Bloggs
年龄 - 40
部门 - IT
工资 - 20,000

人 2

姓名 - Jess Jane
年龄 - 40
部门 - 厨房
工资 - 16,000

……你懂的。

目前,我刚刚选择了所有人员,按工资对他们进行了排序,然后通过这样做非常简单地将他们输入到列表框中。

var item = (from employee in employeeList.employees
orderby employee.wage descending
select employee);
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是,我如何更改这段代码,以便它过滤列表并仅显示其部门中收入最高的员工?例如,它不会列出数百名员工,而是只显示 IT 部门收入最高的员工,然后是餐饮部门收入最高的员工,等等。

是否可以?如果没有,我可以使用其他任何方法来实现这一目标吗?

Chr*_*tos 5

你可以尝试这样的事情:

var result =  employeeList.employees.GroupBy(emp=>emp.Departemnt)
                                    .Select(gr=> new 
                                    { 
                                        Departemnt = gr.Key, 
                                        Employee = gr.OrderByDescending(x=>x.wage)
                                                     .FirstOrDefault() 
                                    });
Run Code Online (Sandbox Code Playgroud)

我们上面做的是按部门分组,我们为每个部门挑选工资最高的员工。