4

親ID = 0の行のみを選択しようとしています

int predecessor = Parent; StringBuilder valuePath = new StringBuilder(); valuePath.Append(Parent.ToString()); DataRow[] drPar; while (true) { drPar = dt.Select("MenuID=" + predecessor); if (drPar != null) { if (drPar[0]["ParentID"].ToString().Equals("0")) break; }

drPar[0]["ParentID"].ToString().Equals("0") は範囲外の例外を与えています..

助けてください !

4

2 に答える 2

7

DataTable.Selectnull一致するものがない場合は返されませんDataRowが、 を持つ配列Length==0です。

しかし、それとは別に、なぜ「無限」ループを 1 つのステートメントだけに使用しているのですか?

したがって、これは機能するはずです:

drPar = dt.Select("MenuID=" + predecessor);
if (drPar.Length != 0)
{
    if (drPar[0]["ParentID"].ToString().Equals("0"))
    {
       // ...
    }
}
于 2012-08-09T23:14:25.537 に答える
2

配列 drPar は、コードで使用する唯一のインデックスであるため、このエラーを発生させるには空にする必要があります。

試す

 if (drPar != null && drPar.Length > 0)
于 2012-08-09T23:08:27.877 に答える