Запрос Linq для возврата двух лучших результатов, когда есть какой-то конфликт, не работает?
Я пытался сделать простую вещь: сформировать коллекцию сотрудников, из которых я хочу получить два лучших списка максимальных сотрудников. Но помните, что может быть несколько сотрудников с одинаковой зарплатой, поэтому я хочу, чтобы все они попадали в максимальный диапазон двух зарплат. ниже приведена моя коллекция, которую я использую:
List<Employee> Employees = new List<Employee> { new Employee {EmployeeID = 1,EmployeeName ="A", Department ="Dept1", Salary = 10000 }, new Employee {EmployeeID = 5,EmployeeName ="A1", Department ="Dept2", Salary = 12000 }, new Employee {EmployeeID = 2,EmployeeName ="B", Department ="Dept1", Salary = 20000 }, new Employee {EmployeeID = 3,EmployeeName ="C", Department ="Dept1", Salary = 20000 }, new Employee {EmployeeID = 6,EmployeeName ="B1", Department ="Dept2", Salary = 4500 }, new Employee {EmployeeID = 4,EmployeeName="D", Department ="Dept1", Salary = 30000 }, };
А класс сотрудников-это:
public class Employee { public int EmployeeID { get; set; } public string EmployeeName { get; set; } public string Department { get; set; } public long Salary { get; set; } }
а ниже мой запрос:
var result1 = from x in Employees group x by x.Salary into g from y in g.OrderBy(x=>x.Salary).Take(2) select new { y.EmployeeID }; foreach (var item in result1) { Console.WriteLine(item.EmployeeID); }
То, что я пытаюсь сделать здесь, заключается в том, что сначала я группирую всех сотрудников на основе их заработной платы. Затем закажите эти группы и возьмите первые две группы, используя метод расширения TAKE, а затем распечатайте всех сотрудников, которые находятся в этих двух группах.
Но я не знаю, почему он печатает всех сотрудников; он даже не заказывает их. Может ли кто-нибудь поделиться некоторыми мыслями и сказать мне, что не так с этим запросом?
Что я уже пробовал:
Я пытался изменить положение порядка ПО и группировать, все еще получая те же результаты.