我有一个数据集 ds1 ,我从表中选择了一个列。
da = new SqlDataAdapter("Select column from table", con); // con is the connection string
da.Fill(ds1, "column");
然后我将第一行的内容分配给字符串数组 getitems [] ,如下所示:
getitems[0] = (ds1.Tables[0].Rows[0]["column"].ToString());
如果我以这种方式使用它,但是数据集包含600行,那么每件事都运行正常。我在循环中使用了上面的语句,但是我收到了一个错误。这是代码:
for(int i=0; i<=600; i++) {
getitems[i] = (ds1.Tables[i].Rows[i]["column"].ToString());
dt.Rows.Add(getitems[i]);
//dt is another data set and is putting the data on a data grid
}
我在将内容分配给字符串数组的行中得到此异常:
Exception Details: System.IndexOutOfRangeException: Cannot find table 1.
答案 0 :(得分:3)
您的DataSet没有600个表!
这不对 - Tables[i]
仅对行使用循环,而不是在行上使用600 Count
或使用foreach循环。类似的东西:
var dt = ds1.Tables[0];
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
答案 1 :(得分:1)
试试这个
for(int i=0; i<600; i++) {
getitems[i] = Convert.ToString(ds1.Tables[0].Rows[i]["column"]);
//Some logic
}