C # moyen simple de copier ou cloner un DataRow?
Je cherche un moyen simple de faire 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 toujours 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;
Cela va-t-il simplement définir la référence Itemarray de Snapshot pour pointer vers celle de la Source ou fait-il réellement une copie séparée? Dois-je faire à la place?
Destination.ItemArray = Source.ItemArray.Clone();
EDIT: Je ne pense pas que le deuxième code extrait compile réellement.
2 réponses
Vous pouvez utiliser ImportRow
méthode à copier une Ligne de DataTable à DataTable avec le même schéma:
var row = SourceTable.Rows[RowNum];
DestinationTable.ImportRow(row);
Mise à Jour:
Avec votre nouvelle Édition, je crois:
var desRow = dataTable.NewRow();
var sourceRow = dataTable.Rows[rowNum];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];
Fonctionnera
, Mais assurez-vous que votre 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);