Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 第一次出现后,如何选择列表中的所有内容?_C#_Linq - Fatal编程技术网

C# 第一次出现后,如何选择列表中的所有内容?

C# 第一次出现后,如何选择列表中的所有内容?,c#,linq,C#,Linq,我有一个集合,其中每个元素都有一个名为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

我有一个集合,其中每个元素都有一个名为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);
}
var afterTop = fullHierarchy.SkipWhile(x => !x.IsTop).Skip(1);

我觉得这有点做作。在LINQ中有没有更简单的方法来实现这一点?

您可以使用以下方法:

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);
}
var afterTop = fullHierarchy.SkipWhile(x => !x.IsTop).Skip(1);
SkipWhile
跳过所有元素,直到在
IsTop==true
中找到第一项,然后
跳过该元素。结果将是
fullHierarchy
中的所有项目,位于第一个项目之后,其中
IsTop==true

请尝试以下操作:

var result = fullHierarchy.SkipWhile(x=>!x.IsTop).Skip(1);
我想这就是你要找的

var myArray = new[]
{
    new { IsTop = false, S = 'a' },
    new { IsTop = true, S = 'b' },
    new { IsTop = false, S = 'c' },
};
myArray.SkipWhile(x => !x.IsTop); // contains the elements with 'b' and 'c'

// in your code, might be
foreach (var config in fullHierarchy.SkipWhile(x => !x.IsTop))
{
    configurationHierarchy.Add(config);
}

您的意思是在第一次出现top之后,那么如何确定集合中的排序呢?排序是在数据源中处理的,因为它是从数据库中读取的。