我想将DataTable
( dataTable1 )分配给另一个DataTable
( dataTable2 )并删除后者中的一些列{{1 }}。例如,我有以下代码:
DataTable
事实证明,DataTable dataTable2 = dataTable1;
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");
( dataTable1 和 dataTable2 )都删除了列。我不明白为什么dataTable1也会删除 column1 和 column2 ,而我只删除 dataTable2 中的列。
[已编辑 - 有回答]
应使用DataTable
AND Clone()
而不是指针赋值。
ImportRow()
答案 0 :(得分:2)
这是因为dataTable2指向与dataTable1相同的表。要解决此问题,请使用DataTable的Clone方法创建具有相同结构的新DataTable:
DataTable dataTable2 = dataTable1.Clone();
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");
答案 1 :(得分:0)
datatable是引用类型,因此如果在一个表中进行更改,两个表的更改原因。而不是循环遍历数据行,您可以调用dataTable1.Copy()将数据和模式复制到另一个数据表。
答案 2 :(得分:0)
datatable.clone()通过引用传递。你必须按价值给予它。
DataTable dataTable2=dataTable1.Copy();
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");
现在从datatable2中删除不会影响DataTable1