0

我有一个数据集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.
4

2 回答 2

3

您的数据集没有 600 个表!

这是不对的——Tables[i]

仅对行使用循环,而不是在行上使用 600Count或使用 foreach 循环。就像是:

 var dt = ds1.Tables[0];
 foreach (DataRow row in dt.Rows) 
 {
    foreach (DataColumn col in dt.Columns)
于 2013-11-13T16:07:01.380 回答
1

试试这个

for(int i=0; i<600; i++) {
    getitems[i] = Convert.ToString(ds1.Tables[0].Rows[i]["column"]);
    //Some logic
}
于 2013-11-13T16:20:17.737 回答