Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过Linq中的Take()选择前三名_C#_Sql_Linq - Fatal编程技术网

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语句。