我有一个数据集,我在for循环中添加了一些值。
System.Data.DataSet dsUserResult = new System.Data.DataSet();
dsUserResult = new System.Data.DataSet();
for (i= 0; i< 3; i++) {
dsUserResult = getUserByProgramId(i); //This return some values and store it into the dsUserresult
}
现在,如果getUserByProgramId(i) return 4
值i=0
,它会将其存储到数据集中,但当它再次运行第二次(i=1)
时,它会删除现有数据集值,然后添加新值,我实际上希望新值附加在数据集中添加的先前值。
答案 0 :(得分:1)
您没有在数据集中添加一些值。您将在每个循环中使用 getUserByProgramId 调用返回的新数据集替换 dsUserResult 的先前值。循环结束,唯一存在的数据集是从循环中检索到的最后一个数据集。
数据集包含DataTable的集合。在此集合中,存储从数据库中检索的值。
因此,我想,从方法的名称,每次调用该方法时,您都会检索存储在返回的数据集的第一个DataTable中的另一组用户。
如果这是 getUserByProgramId 中发生的事情,那么你应该合并第一个循环的结果与第二个循环和第三个循环的结果。但是你要合并的是返回的DataSet中包含的DataTable。
// First dataset used as base...
dsUserResult = getUserByProgramId(0);
// skip the first and get the other two.
for (i=1; i<3; i++)
{
// Get another one...
DataSet ds = getUserByProgramId(i);
// Merge the content of the first table currently returned
// with the content of the base dataset....
dsUserResult.Tables[0].Merge(ds.Tables[0]);
}