将DataTable分配给DataTable

时间:2011-07-10 12:35:17

标签: c# wpf datatable

我想将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()

3 个答案:

答案 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