1
我正在嘗試簡單的事情,形成員工集合,我想獲取前兩名最高員工名單。但請記住,可以有多個員工的薪水相同,所以如果他們落入最高兩個薪金範圍,我希望他們都是。下面是我收集的是我使用:當存在衝突時,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 },
};
和Employee類:
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擴展方法先取得前兩組,然後打印這兩組中的所有員工。
但我不知道爲什麼它打印所有的員工;它甚至沒有訂購它們。有人可以分享一些想法,並告訴我這個查詢有什麼問題嗎?
可以請你幫我在我的查詢,爲什麼它不工作? – sunil20000
@ sunil20000你的查詢不起作用,因爲你在每組中前兩位,而不是前兩組 –
得到它,謝謝。 – sunil20000