DataTable.Rows.IndexOf throws System.IndexOutOfRangeExceptio



我有一个DataTable,称为table。我需要找到存储在table中的DataRow的索引。

DataRow[] user = table.Select("Username = '" + username + "'");
table.Rows.IndexOf(user[0]);

第一行工作正常。我知道它返回有效的DataRow,因为我在其他地方使用了DataRow。但是,当我运行table.Rows.IndexOf(user[0]);时,它会抛出System.IndexOutOfRangeException,说"索引不在数组的范围之外"。我不明白为什么这会引起异常。有人有任何想法吗?

@servers问题是您没有从第一行收到任何行,计数为0。您可能需要在执行用户之前检查计数[0]。以下是您的示例代码。

        DataTable table = new DataTable();
        table.Clear();
        table.Columns.Add("Username");
        table.Columns.Add("Marks");
        DataRow dataRow = table.NewRow();
        dataRow["Username"] = "xyz";
        dataRow["Marks"] = "500";
        table.Rows.Add(dataRow);
        var username = "xyz";
        DataRow[] user = table.Select("Username = '" + username + "'");
        if(user.Length > 0 )
        table.Rows.IndexOf(user[0]);

相关内容

最新更新