【发布时间】:2025-12-29 19:05:11
【问题描述】:
我有 2 个 while 循环,一个在另一个循环中,它遍历 2 个不同的数据集,我希望外部 while 循环的第一行数据循环遍历内部 while 循环中的所有行以寻找匹配项,如果没有,则移动到外循环的第二行,再次循环内循环中的所有记录。但是,在第一个外循环的记录循环完内循环的所有记录后,外循环的第二行不再循环内循环的记录;就好像第一次尝试遍历内部循环中的所有记录并没有将自己重置回开始!这是我的代码 - 谁能告诉我哪里出错了?
$PgConnString = "select pgName from table1"
$MsConnString = "SELECT msName FROM table2";
$PgDbConn = CreateDbConnection "Postgres";
$PgDbCmd = CreateDbCommand $PgConnString $PgDbConn;
$PgReaderOutput = $PgDbCmd.ExecuteReader();
$MsDbConn = CreateDbConnection "MSSql";
$MsDbCmd = CreateDbCommand $MsConnString $MsDbConn;
$MsReaderOutput = $MsDbCmd.ExecuteReader();
while ($PgReaderOutput.Read())
{
$ReporterName = $PgReaderOutput.GetValue(0);
Write-Output "Current Reporter is: $ReporterName";
while ($MsReaderOutput.Read())
{
$CurrMsRec = $MsReaderOutput.GetValue(0);
Write-Output "Current SQL record is: $CurrMsRec";
if($CurrMsRec -eq $ReporterName)
{
$Match = 1
Write-Output "Matched"
}
else
{
Write-Output "No Matched"
$Match = 0;
}
}
If($Match -eq 1)
{
Write-Output "The reporter: $ReporterName has not been sent an email; send them one!";
}
}
【问题讨论】:
-
看起来不可能通过重置或执行类似操作的方法:*.com/questions/16361672/…。
标签: powershell while-loop