gpt4 book ai didi

c# - 在 LINQ 中使用 SkipWhile() 的奇怪输出

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:51 26 4
gpt4 key购买 nike

我正在尝试练习下面的示例,但是 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 时跳过薪水。

enter image description here

最佳答案

SkipWhile 不会跳过具有给定条件的所有 元素,但只会跳过所有元素,直到满足此条件。如果你想跳过所有使用 Where:

var secS = hsal.Where(x => x.Salary >= 19000);

输出(为什么 “它不应该产生任何结果”,有一个 salary=20000 ?):

Employer 1 of Dept 1 gets 20000 as salary

关于c# - 在 LINQ 中使用 SkipWhile() 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27356178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com