2012-08-09 59 views
3

我試圖僅選擇具有父ID的那些行的= 0DataTable.Select()屬性:給索引超出束縛異常

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()。等於(」0「)給我 超出範圍的例外..

幫助請!

回答

6

DataTable.Select不會返回null當沒有匹配DataRowLength==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) 
+0

那麼如何檢查dt.select返回0行? – Harry47 2012-08-09 23:09:37

+0

它的工作原理! 謝謝! – Harry47 2012-08-09 23:12:28