2011-08-13 57 views
22

我能做到循环使用一个以上的条件是这样的:foreach循环

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

} 

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

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

但没有使用break;

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

+0

我很惊讶,没有人建议你使用的方法对于所有这些条件。 –

+0

@安德特纳:你能解释一下吗? – Naor

回答

45

可以使用Enumerable.TakeWhile Extension Method

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 
} 
+1

不错,从来不知道! –