DataTable.Rows.IndexOf抛出System.IndexOutOfRangeException C#
我有一个名为DataTable.Rows.IndexOf抛出System.IndexOutOfRangeException C#,c#,sql,datatable,indexof,C#,Sql,Datatable,Indexof,我有一个名为table的DataTable。我需要找到存储在表中的数据行的索引 DataRow[] user = table.Select("Username = '" + username + "'"); table.Rows.IndexOf(user[0]); 第一行很好用。我知道它返回一个有效的DataRow,因为我在别处使用了DataRow。但是,当我运行table.Rows.IndexOf(用户[0])时,它抛出一个System.IndexOutOfRangeException,说“
table
的DataTable
。我需要找到存储在表
中的数据行
的索引
DataRow[] user = table.Select("Username = '" + username + "'");
table.Rows.IndexOf(user[0]);
第一行很好用。我知道它返回一个有效的
DataRow
,因为我在别处使用了DataRow
。但是,当我运行table.Rows.IndexOf(用户[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]);
在您的表格中是否有“Username=xxxxxx”字段?这就是它要找的。有一个名为Username的列。当您将鼠标悬停在user上时,在第一行中,是否可以看到{System.Data.DataRow[1]}?我通过创建一个虚拟表并添加一行来运行代码。它毫无例外地工作。我认为引发异常的是
user[0]
。您的查询不能返回任何results@JFT它显示{System.Data.DataRow[0]}@Rufus L我添加了一些注释。谢谢