如何将DataTable移动到另一个DataSet?

时间:2018-08-20 07:06:17

标签: c# datatable

如何将DataTable对象从一个数据集移动到另一个数据集,并避免在内存中复制数据?像这样的东西:

var ds1 = new DataSet();
var ds2 = new DataSet();
IDataAdapter da = myDataAdapterFactory.New();
da.Fill(ds1);
Console.WriteLine(ds1.Tables.Count);//1 
Console.WriteLine(ds2.Tables.Count);//0 
ds1.MoveDataTableTo(ds2, ds1.Tables[0]);
Console.WriteLine(ds1.Tables.Count);//0 
Console.WriteLine(ds2.Tables.Count);//1 

我无法花费内存,这就是为什么我不使用DataTable.Copy()DataSet.Merge()或其他方式来复制内存中的行的原因。

2 个答案:

答案 0 :(得分:1)

您可以将需要移动的数据表从第一个数据集Remove移到另一个Add

var dt = ds1.Tables[0]; 
ds1.Remove(dt); 
ds2.Add(dt);

答案 1 :(得分:0)

使用此功能

   services.AddMvc(options =>
    {
        var defaultPolicy = new AuthorizationPolicyBuilder(new[] { CookieAuthenticationDefaults.AuthenticationScheme, JwtBearerDefaults.AuthenticationScheme, OpenIdConnectDefaults.AuthenticationScheme })
                  .RequireAuthenticatedUser()
                  .Build();
        options.Filters.Add(new AuthorizeFilter(defaultPolicy));
    })

假设您要将sourceSet的第一个表复制到destinationSet。 像这样

public DataTable CopyDataTable(DataTable dtSource)
{
        // cloned to get the structure of source
        DataTable dtDestination = dtSource.Clone();
        for (int i = 0; i < dtSource.Rows.Count; i++)
        {
            dtDestination.ImportRow(dtSource.Rows[i]);
        }
        return dtDestination;
}