C # moyen simple de copier ou de cloner un DataRow?

Je cherche un moyen simple de créer un clone d’un DataRow. Un peu comme prendre un instantané de cette ligne et l’enregistrer. Les valeurs de la ligne d’origine sont alors libres de changer, mais nous avons encore une autre copie enregistrée qui ne change pas. Est-ce la bonne façon de le faire?

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

Est-ce que cela va simplement définir la référence ItemArray de Snapshot pour qu’elle pointe sur celle de Source ou crée-t-elle une copie séparée? Dois-je le faire à la place?

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

EDIT: Je ne pense pas que le deuxième extrait de code comstack réellement.

Vous pouvez utiliser la méthode ImportRow pour copier Row de DataTable vers DataTable avec le même schéma:

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

Mettre à jour:

Avec votre nouvel Edit, je crois:

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

marchera

Mais pour vous assurer que votre nouvelle ligne est accessible dans la nouvelle table, vous devez fermer la table:

 DataTable Destination = new DataTable(Source.TableName); Destination = Source.Clone(); DataRow sourceRow = Source.Rows[0]; Destination.ImportRow(sourceRow);