在c#中像DataRow一样添加数据集到另一个数据集

本文关键字:数据集 添加 一样 另一个 中像 DataRow | 更新日期: 2023-09-27 17:54:05

            sqlHelper = new SqlHelper();
            sqlHelper.OpenConnection();
            int i;
            String sqlSt = string.Empty;
            for (i = 0; i < tag.Count; i++)
            {
               sqlSt = "Select TagID from TagsList where TagName= '" + tag[i] + "'";
               ds = sqlHelper.ExecuteDataSet(sqlSt, CommandType.Text);
               if (ds != null)
               {
                   if (ds.Tables[0].Rows.Count > 0)
                   {
                       //dt = ds1.Tables[0];
                       ds.Tables[0].Rows.Add(ds);
                   }
               }
             }
             return ds;

我想将一个数据集添加到另一个数据集,最后将返回累积数据集。

我得到一个错误- Unable to cast object of type 'System.Data.DataSet' to type 'System.IConvertible'.Couldn't store <System.Data.DataSet>

EDIT:我想要的是,我得到一个由特定int值组成的数据集,每种类型我的for循环运行,我想将所有这些记录添加到数据集,然后返回我的数据集

在c#中像DataRow一样添加数据集到另一个数据集

我想知道这是否是一个错字,因为你正在添加相同的数据集到它的第一个表的行集合:

ds.Tables [0] .Rows.Add (ds);

如果我理解正确,你有一个数据集ds1,你想把它的表添加到ds。为此,您需要通过两个步骤逐个表移动:克隆表并导入其行

例如,复制第一个表(索引0):

//clone first table
DataTable dt = ds1.Tables[0].Clone();
//add rows
foreach (DataRow dr in ds1.Tables[0].Rows)
{
    dt.ImportRow(dr);
}
//add table to DataSet
ds.Tables.Add(dt); 

:我还将研究DataTableExtensions CopyToDataTable。它相信你也可以这样做(未经测试):

//copy first table
DataTable dt = ds1.Tables[0].AsEnumerable().CopyToDataTable();    
//add table to DataSet
ds.Tables.Add(dt); 

技术上我们不能将一个数据集添加到另一个数据集,因为ASP中的数据集。. NET通常是只读的

所以,首先我们必须创建第二个数据集的对象引用。

步骤:

bool IsFirstTime  = true;(Create OutSide Loop)

Inside Loop:

if (IsFirstTime)
{
// dsLoopData Contains Records
dsTotalRecords = dsLoopData.Clone();
IsFirstTime = false;
}

1。一次性插入(批量复制)

dsTotalRecords.Tables[0].Merge(dsLoopData.Tables[0]);

2。逐行插入

for (int i = 0; i < dsLoopData.Tables[0].Rows.Count; i++)
{
dsTotalRecords.Tables[0].ImportRow(dsLoopData.Tables[0].Rows[i]);
}