C# 通过Linq中的Take()选择前三名
我有这张桌子C# 通过Linq中的Take()选择前三名,c#,sql,linq,C#,Sql,Linq,我有这张桌子 EMPs(EmpNo int primary key identity(001,1), Ename nvarchar(50), Job nvarchar(20), Mgr int, HireDate datetime, Sal int, Comm int, DeptNo) 我想选择前三名谁是希萨尔 (from a in EMPs group a by true into r select r.OrderByDescending(x => x.Sall +(x.Comm
EMPs(EmpNo int primary key identity(001,1),
Ename nvarchar(50),
Job nvarchar(20),
Mgr int,
HireDate datetime,
Sal int,
Comm int,
DeptNo)
我想选择前三名谁是希萨尔
(from a in EMPs
group a by true into r
select r.OrderByDescending(x => x.Sall +(x.Comm != null ? x.Comm :0))).Take(3)
看起来你是按最高(薪水+佣金)到最低(佣金)排序,然后试着选择前三名 我觉得你把事情弄得比你必须做的更复杂了。试试这个:
var top3salaries = EMPs.OrderByDescending(x => x.Sal + x.Comm).Take(3);
您的查询还显示佣金可以是null
。如果是这样的话:
var top3salaries = EMPs.OrderByDescending(x => x.Sal + (x.Comm ?? 0)).Take(3);
请尝试以下查询:
选择前(3)名,最高(工资)为Hisal
来自员工
按员工ID分组
按最高(工资)说明订购
HiSal是什么意思?什么是x.Sall?什么是x通讯?我们需要更多的上下文来回答这个问题。根据您的问题,这个查询可以帮助您获得前三名的最高工资。OP显然希望使用LINQ,而不是直接编写SQL语句。