将一个DataTable赋给另一个DataTable
本文关键字:DataTable 另一个 一个 | 更新日期: 2023-09-27 18:01:36
我想将DataTable
(dataTable1)分配给另一个DataTable
(dataTable2)并删除后者DataTable
中的一些列。例如,我有以下代码:
DataTable dataTable2 = dataTable1;
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");
结果是DataTable
(dataTable1和dataTable2)都删除了列。我不明白为什么dataTable1会有column1和column2被删除,而我只是删除列在dataTable2。
[EDITED - with answer]
应该使用Clone()
和ImportRow()
,而不是指针赋值。
DataTable dataTable2 = dataTable1.Clone()
for (int i = 0; i < dataTable1.Rows.Count; i++)
{
dataTable2.ImportRow(dataTable1.Rows[i]);
}
这是因为dataTable2和dataTable1指向同一个表。为了解决这个问题,使用DataTable的Clone方法创建一个具有相同结构的新DataTable:
DataTable dataTable2 = dataTable1.Clone();
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");
datatable是引用类型,所以如果在一个表中进行更改,两个表都会更改。而不是循环通过数据行,你可以调用dataTable1.Copy()复制数据和模式到另一个数据表
datatable.clone()是通过引用传递的。你必须给出它的值。
DataTable dataTable2=dataTable1.Copy();
dataTable2.Columns.Remove("column1");
dataTable2.Columns.Remove("column2");
现在删除From datatable2不影响DataTable1