如何将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()
或其他方式来复制内存中的行的原因。
答案 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;
}