可能重复:
突破嵌套循环
我得到的东西(简化)
foreach (...)
{
foreach (...)
{
//Some code
if (statement)
{
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我希望我的声明留给双foreach循环!我正在考虑将某种"破坏标志"作为布尔值,但是有什么方法可以避免这种情况吗?
ada*_*ost 10
你可以使用转到.
你可以尝试:
bool leave = false;
foreach (...)
{
foreach (...)
{
//Some code
if (statement)
{
leave = true;
break;
}
}
if (leave) break;
}
Run Code Online (Sandbox Code Playgroud)
编辑:移动了break标志
您可以通过使用Linq和完全避免嵌套循环SelectMany.
代替:
foreach(var value in someValues)
{
foreach(var subValue in value.SubValues)
{
// ...
break;
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码将变为:
foreach(var subValue in someValues.SelectMany(v => v.SubValues))
{
// ...
break;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要一些逻辑来选择是否循环SubValues,请将该逻辑抛出到附加Where子句中.
代替
foreach(var value in someValues)
{
if(value.IsMumsHairGreenToday)
{
foreach(var subValue in value.SubValues)
{
// ...
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以写:
var subValues = someValues
.Where(v => v.IsMumsHairGreenToday)
.SelectMany(v => v.SubValues)
;
foreach(var subValue in subValues)
{
// ...
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4987 次 |
| 最近记录: |