web-dev-qa-db-ja.com

DataRowをコピーまたはクローンするC#の簡単な方法は?

DataRowのクローンを作成する簡単な方法を探しています。その行のスナップショットを取得して保存するようなものです。元の行の値は自由に変更できますが、変更されていない別の保存済みコピーがまだあります。これは正しい方法ですか?

    DataRow Source, Destination;
    //Assume we create some columns and fill them with values
    Destination.ItemArray = Source.ItemArray;

これは、SnapshotのItemArray参照をSource内の参照を指すように設定するだけですか、それとも実際に別のコピーを作成しますか?代わりにこれを行う必要がありますか?

    Destination.ItemArray = Source.ItemArray.Clone();

編集:私は2番目のコードスニペットが実際にコンパイルするとは思わない。

101
Paul Matthews

ImportRow method を使用して、同じスキーマでDataTableからDataTableに行をコピーできます。

var row = SourceTable.Rows[RowNum];
DestinationTable.ImportRow(row);

更新:

新しい編集で、私は信じています:

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

働くでしょう

167
cuongle