我有一个集合,其中每个元素都有一个名为 IsTop 的属性。我想要做的是使用 linq(如果可能)在 IsTop == true 第一次出现后选择所有内容。现在,我这样做:
bool[] foundTop = {false}; // use array for modified closure
foreach (var config in fullHierarchy
.Where(config => config.IsTop || foundTop[0]))
{
foundTop[0] = true;
configurationHierarchy.Add(config);
}
我觉得这有点做作。在 LINQ 中是否有更简单的方法来实现这一点?
最佳答案
你可以使用这样的东西:
var afterTop = fullHierarchy.SkipWhile(x => !x.IsTop).Skip(1);
SkipWhile
跳过所有元素,直到在 IsTop == true
处找到第一项,然后 Skip
也跳过该元素。结果将是 fullHierarchy
中第一个 IsTop == true
之后的所有项目。关于c# - 如何在第一次出现后选择列表中的所有内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20106288/