I have the following loop structure:
while ($reader.Read() -eq $true)
{
$row = @{}
for ($i = 0; $i -lt $reader.FieldCount; $i++)
{
if(something...)
{
#continue with while
}
}
#do more stuff...
}
Now, is there any way to continue from within the for
loop with the next iteration of the outer while
loop without any break-variable? So if "something is true" I do not want to go #do more stuff
but instead do the next $reader.read()
. Continue
only goes to the next iteration of the for
loop. Break
will only break the for
loop.
Factoring out the inner loop to a function could improve readability, depending on how tangled up your variables are.
function processRow($reader) {
$row = @{}
for ($i = 0; $i -lt $reader.FieldCount; $i++)
{
if(-not something...) { return $null }
# process row
}
$row
}
while ($reader.Read()) {
$row = processRow $reader
if ($row) {
#do more stuff...
}
}
But if you want to do this directly, you can, because PowerShell has labeled breaks:
:nextRow while ($reader.Read()) {
$row = @{}
for ($i = 0; $i -lt $reader.FieldCount; $i++) {
if(something...) {
#continue with while
continue nextRow
}
}
#do more stuff...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With