I have the following loop structure:
while ($reader.Read() -eq $true)
{
$row = @{}
for ($i = 0; $i -lt $reader.FieldCount; $i++)
{
if(som
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...
}
EDIT: a revised, recursive (and untested!) solution so your millage may vary:
function doReader()
{
while ($reader.Read() -eq $true)
{
$row = @{}
for ($i = 0; $i -lt $reader.FieldCount; $i++)
{
if(something...)
{
#continue with while
doReader
break;
}
}
}
}
doReader
#do more stuff