如果我有一個foreach
循環,有沒有什麼辦法檢查一個布爾值?'foreach'循環是否可以進行條件檢查?
我不想在foreach()
之內檢查一次,然後中斷例如。我想要foreach
超過一個集合,並在同一時間評估是否有事。
例如,我不想做的事:
IEnumerable<Job> jobs = currentJobs;
foreach(Job job in jobs)
{
if (found)
break;
}
如果我有一個foreach
循環,有沒有什麼辦法檢查一個布爾值?'foreach'循環是否可以進行條件檢查?
我不想在foreach()
之內檢查一次,然後中斷例如。我想要foreach
超過一個集合,並在同一時間評估是否有事。
例如,我不想做的事:
IEnumerable<Job> jobs = currentJobs;
foreach(Job job in jobs)
{
if (found)
break;
}
你總是可以把它變成一個for循環。
for (i = 0; i < jobs.Count && booleanTrue; i++) {
// do a lot of great stuff
}
您還需要改變工作從IEnumerable
到IList
。我認爲IList
會更好地爲您的目的服務。 IEnumerable
在您需要它們之前,懶惰會評估這些元素,並且不包含關聯的集合幫助器方法。
不,一個foreach只適用於每個元素。
您可以在常規的for(a; b; c)
循環中合併多個條件。像for(a; b && x; c)
不是很喜歡它,但也許一些LINQ?
bool yourBool = false;
foreach(var item in
collection.TakeWhile(x => yourBool))
{...}
?
嘗試使用TakeWhile。
從例如:
string[] fruits = { "apple", "banana", "mango", "orange",
"passionfruit", "grape" };
IEnumerable<string> query =
fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
/*
This code produces the following output:
apple
banana
mango
*/
我是否理解正確,你
我不明白使用foreach
循環的阻力;我想要麼你有什麼堅持或
foreach(var job in jobs.TakeWhile(x => someCondition(x)) {
someAction(job);
}
我找到了另一種方法:
foreach (var car in cars) if (!rentedCars.Contains(car))
{
// Magic
}
你能提供一個例子嗎?我對你的意思有點模糊......這意味着其他人也可能感到困惑。 – 2010-12-02 14:26:21
你能提供更多的細節和/或例子嗎? – LukeH 2010-12-02 14:26:34
你的意思是像foreach(var item in MyList.Where(condition)) – Kikaimaru 2010-12-02 14:27:52