【发布时间】:2015-06-05 02:46:58
【问题描述】:
我试图锻炼下面的例子,但得到了 SkipWhile() 操作的奇怪输出,它没有显示预期的输出。有人能解释一下原因吗?
List<Employees> emp = new List<Employees>();
emp.Add(new Employees() { EmpId = 1, DeptId = 1, Salary = 20000 });
emp.Add(new Employees() { EmpId = 2, DeptId = 2, Salary = 1000 });
emp.Add(new Employees() { EmpId = 3, DeptId = 1, Salary = 3000 });
emp.Add(new Employees() { EmpId = 4, DeptId = 3, Salary = 5000 });
emp.Add(new Employees() { EmpId = 5, DeptId = 2, Salary = 4000 });
var hsal = emp.OrderByDescending(x => x.Salary).GroupBy(x => x.DeptId).Select(x => x.FirstOrDefault());
var secS = hsal.SkipWhile(x => x.Salary < 19000);
foreach (Employees x in secS)
{
Console.WriteLine("Employer {0} of Dept {1} gets {2} as salary", x.EmpId, x.DeptId, x.Salary);
}
我得到的输出是,但它不应该产生任何结果,因为它必须在低于 19000 时跳过工资。
【问题讨论】: