DataTable.Clear()方法影响分离的行

时间:2015-10-09 07:29:11

标签: c# ado.net strongly-typed-dataset

我尝试做这样的事情来创建类型化数据流的副本:

var desRow = dataTable.NewRow();
var sourceRow = dataTable.Rows[rowNum];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];

但是当我调用dataTable.Clear()方法时,它会清除desRow中的所有字段。如何创建DataRow的深层副本?

1 个答案:

答案 0 :(得分:1)

在您创建新行的代码中,您使用该行创建了对dataTable的引用,这就是它清除所有字段的原因。

您可以使用数据表克隆,这样就可以获得深层复制。

DataTable dt = ...
DataTable cloneDt = dt.Clone();

DataRow row = cloneDt.Rows[number];

dt.Rows.Clear();
dt.Rows.Add(row);

这样,您的原始数据表只包含选定的行。