我希望将一个DataTable (dataTable1)分配给另一个DataTable (dataTable2),并删除后一个DataTable中的一些列。例如,我有以下代码:
DataTable dataTable2 = dataTable1;
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");结果,DataTable (dataTable1和dataTable2)都删除了列。我不明白为什么dataTable1也会删除column1和column2,而我只删除dataTable2中的列。
编辑-有答案
应该使用Clone()和ImportRow()而不是指针赋值。
DataTable dataTable2 = dataTable1.Clone()
for (int i = 0; i < dataTable1.Rows.Count; i++)
{
dataTable2.ImportRow(dataTable1.Rows[i]);
}发布于 2011-07-10 12:42:39
这是因为dataTable2指向与dataTable1相同的表。要解决此问题,请使用DataTable的Clone方法创建具有相同结构的新DataTable:
DataTable dataTable2 = dataTable1.Clone();
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");发布于 2013-01-21 12:35:35
datatable是引用类型,因此,如果在一个表中进行更改,则这两个表都会发生更改。而不是循环遍历数据行,您可以调用dataTable1.Copy()将数据和模式复制到另一个datatable。
发布于 2013-10-25 07:09:13
datatable.clone()是通过引用传递的。你必须按价值给它。
DataTable dataTable2=dataTable1.Copy(); dataTable2.Columns.Remove("column1"); dataTable2.Columns.Remove("column2");
现在,从datatable2中删除不会影响DataTable1
https://stackoverflow.com/questions/6641125
复制相似问题