具有条件的foreach循环

我可以循环使用多个这样的条件:

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

有没有办法使用foreach来做到这一点:

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

但不使用break;

我需要这个以传递Enumerable,如果我的条件不正确,我不想继续迭代。

您可以使用Enumerable.TakeWhile扩展方法 :

 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 }