如果条件满足linq,如何打破循环?

rat*_*tty 2 c# linq

我有包含的整数列表

{1,2,3,1,2,1,5,1,2,1,1} 
Run Code Online (Sandbox Code Playgroud)

我喜欢检索5之前的所有1.我需要在5之后跳过所有其他项目.结束列表将是

{1,1,1}
Run Code Online (Sandbox Code Playgroud)

我怎么能用linq做到这一点?

And*_*are 15

试试这个:

using System.Linq;

class Program
{
    static void Main()
    {
        var list 
            = new[] { 1, 2, 3, 1, 2, 1, 5, 1, 2, 1, 1 };

        var filteredList 
            = list.TakeWhile(i => i != 5)
                    .Where(j => j == 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

TakeWhile方法生成原始序列中的所有元素,直到元素使谓词失败.所以在这种情况下,我们将产生所有数字,list直到我们达到等于5的数字.

完成此操作后,我们可以简单地将生成的序列过滤为仅使用1 Where.