DataTable.Select() 属性:引发索引超出范围异常

4
我试图只选择那些Parent 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 && drPar.Length > 0) //添加了一个判断 { if (drPar[0]["ParentID"].ToString().Equals("0")) break; }

drPar[0]["ParentID"].ToString().Equals("0")给我返回了一个越界异常..

请帮忙!

2个回答

7

DataTable.Select方法在没有匹配的DataRow时不会返回null,而是返回一个长度为0的数组。

但除此之外,为什么你要用“无限”循环来执行一个语句呢?

所以,以下代码应该可以正常工作:

drPar = dt.Select("MenuID=" + predecessor);
if (drPar.Length != 0)
{
    if (drPar[0]["ParentID"].ToString().Equals("0"))
    {
       // ...
    }
}

2

如果数组drPar为空,则会出现此错误,因为它是您在代码中使用的唯一索引。

请尝试

 if (drPar != null && drPar.Length > 0)

那么如何检查 dt.select 返回的行数是否为0呢? - Harry47

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接