DataTable.Rows.IndexOf抛出System.IndexOutOfRangeException C#

时间:2017-09-28 18:45:17

标签: c# sql datatable indexof

我有DataTable,名为table。我需要找到DataRow中存储的table的索引。

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

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

1 个答案:

答案 0 :(得分:1)

@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]);