2011-08-13 203 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

不錯,從來不知道! –