我尝试做这样的事情来创建类型化数据流的副本:
var desRow = dataTable.NewRow();
var sourceRow = dataTable.Rows[rowNum];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];
但是当我调用dataTable.Clear()
方法时,它会清除desRow中的所有字段。如何创建DataRow
的深层副本?
答案 0 :(得分:1)
在您创建新行的代码中,您使用该行创建了对dataTable的引用,这就是它清除所有字段的原因。
您可以使用数据表克隆,这样就可以获得深层复制。
DataTable dt = ...
DataTable cloneDt = dt.Clone();
DataRow row = cloneDt.Rows[number];
dt.Rows.Clear();
dt.Rows.Add(row);
这样,您的原始数据表只包含选定的行。