首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个While循环内的while循环不会重新读取内部while循环

问在另一个While循环内的while循环不会重新读取内部while循环
EN

Stack Overflow用户
提问于 2014-11-08 08:03:33
回答 1查看 303关注 0票数 0

我有两个while循环,一个在另一个循环中,它们遍历两个不同的数据集,我希望外部while循环的第一行数据遍历内部while循环中的所有行,查找匹配项,如果不匹配,则移动到外部循环中的第二行,再次循环遍历内部while循环中的所有记录。但是,在第一个外部循环的记录遍历了内部循环中的所有记录之后,外部循环中的第二行不会遍历内部循环中的记录;这就好像第一次尝试遍历内部循环中的所有记录时并没有将自己重置回开始位置!这是我的代码--有人能告诉我哪里出错了吗?

代码语言:javascript
复制
$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!";
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-11-08 08:18:27

在内部循环中,您将遍历$MsReaderOutput.Read()返回的所有元素。当这个内部循环第一次完成时,您不会对外部循环中的$MsReaderOutput做任何更改,因此下次处理它时不可能有更多的元素。

我假设您希望在每个内部循环开始之前重置$MsReaderOutput对象,这样您就可以再次开始迭代它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26812111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档