首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DataTable分配给DataTable

将DataTable分配给DataTable
EN

Stack Overflow用户
提问于 2011-07-10 12:35:16
回答 3查看 5.2K关注 0票数 2

我希望将一个DataTable (dataTable1)分配给另一个DataTable (dataTable2),并删除后一个DataTable中的一些列。例如,我有以下代码:

代码语言:javascript
复制
DataTable dataTable2 = dataTable1;
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");

结果,DataTable (dataTable1dataTable2)都删除了列。我不明白为什么dataTable1也会删除column1column2,而我只删除dataTable2中的列。

编辑-有答案

应该使用Clone()ImportRow()而不是指针赋值。

代码语言:javascript
复制
DataTable dataTable2 = dataTable1.Clone()
for (int i = 0; i < dataTable1.Rows.Count; i++)
{
   dataTable2.ImportRow(dataTable1.Rows[i]);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-10 12:42:39

这是因为dataTable2指向与dataTable1相同的表。要解决此问题,请使用DataTable的Clone方法创建具有相同结构的新DataTable:

代码语言:javascript
复制
        DataTable dataTable2  = dataTable1.Clone();  
        dataTable2.Columns.Remove("column1");
        dataTable2.Columns.Remove("column2");
票数 2
EN

Stack Overflow用户

发布于 2013-01-21 12:35:35

datatable是引用类型,因此,如果在一个表中进行更改,则这两个表都会发生更改。而不是循环遍历数据行,您可以调用dataTable1.Copy()将数据和模式复制到另一个datatable。

票数 0
EN

Stack Overflow用户

发布于 2013-10-25 07:09:13

datatable.clone()是通过引用传递的。你必须按价值给它。

DataTable dataTable2=dataTable1.Copy(); dataTable2.Columns.Remove("column1"); dataTable2.Columns.Remove("column2");

现在,从datatable2中删除不会影响DataTable1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6641125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档