Подтвердить что ты не робот

Петля foreach с условиями

Я могу сделать цикл с более чем одним условием вроде этого:

for (int i = 0; condition1 && condition2 && ... && conditionN  ; i++) {

}

Есть ли способ сделать это с помощью foreach:

foreach (var i in arr and while condition1 && condition2 && ... && conditionN) {
}

Но без использования break;?

Мне нужно это, чтобы передать Enumerable, и я не хочу продолжать итерации, если мое условие неверно.

4b9b3361

Ответ 1

Вы можете использовать метод Enumerable.TakeWhile Extension:

foreach (var i in arr.TakeWhile(j => condition1 && ... && conditionN))
{
    // do something
}

Это примерно эквивалентно:

foreach (var j in arr)
{
    if (!(condition1 && ... && conditionN))
    {
        break;
    }
    var i = j;
    // do something
}