我有一个集合,其中每个元素都有一个名为 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/

10-09 01:18