我有以下sql查询找到第二个最高薪水.
Select * From Employee E1 Where
(2) = (Select Count(Distinct(E2.Salary)) From Employee E2 Where
E2.Salary > E1.Salary)
我想将其转换为Linq语句.
Ian*_*son 23
我想你要问的是找到薪水第二高的员工?
如果是这样,那将是类似的
var employee = Employees
.OrderByDescending(e => e.Salary)
.Skip(1)
.First();
Run Code Online (Sandbox Code Playgroud)
如果多个员工可能有相同的工资,并且您希望返回所有员工的IEnumerable,其薪水可以是第二高的:
var employees = Employees
.GroupBy(e => e.Salary)
.OrderByDescending(g => g.Key)
.Skip(1)
.First();
Run Code Online (Sandbox Code Playgroud)
(感谢@ diceguyd30建议后一种增强)
小智 5
List<Employee> employees = new List<Employee>()
{
new Employee { Id = 1, UserName = "Anil" , Salary = 5000},
new Employee { Id = 2, UserName = "Sunil" , Salary = 6000},
new Employee { Id = 3, UserName = "Lokesh" , Salary = 5500},
new Employee { Id = 4, UserName = "Vinay" , Salary = 7000}
};
var emp = employees.OrderByDescending(x => x.Salary).Skip(1).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)