我有这张桌子:
CREATE TABLE EMP (
EmpNo INT IDENTITY(1,1) PRIMARY KEY,
Ename NVARCHAR(350),
JOB NVARCHAR(100),
Mgr INT, HireDate DATETIME,
Sal INT,
Comm INT,
DeptNo INT )
我想选择经理高薪雇员的薪水。
这是我的代码:
from a in EMPs
where ((from b in EMPs where b.Mgr != null
select b.Sal + (b.Comm != null ? b.Comm :0))) > (select c in EMPs where c.Mgr == null
select b.Sal +(b.Comm != null ? b.Comm :0))
select a.Ename
请!帮助我。
答案 0 :(得分:2)
我认为您正在寻找所有在每位经理下获得最高工资的员工。如果是这种情况,请尝试: -
var query = employees.GroupBy(x => x.ManagerName)
.Select(x => new { ManagerName = x.Key,EmployeeName = x.OrderByDescending(z => z.Salary + (z.Comm ?? 0)).First().EmpName });
第1步:按管理员名称分组 第2步:选择ManagerName(分组后将为Key),从每个组中按降序排序并选择第一个员工来获取收入最高的员工。
我使用过这种类型: -
public class Employee
{
public int EmpID { get; set; }
public string EmpName { get; set; }
public string ManagerName { get; set; }
public decimal Salary { get; set; }
public int? Comm { get; set; }
}