web-dev-qa-db-fra.com

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 rangée et l'enregistrer. Les valeurs de Row d'origine sont alors libres de changer, mais nous avons toujours une autre copie sauvegardé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 vers celle de Source ou est-ce que cela en fait une copie séparée? Devrais-je faire cela à la place?

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

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

102
Paul Matthews

Vous pouvez utiliser ImportRow method pour copier Row de DataTable vers 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[];

marchera

170
cuongle