129 votes

C# manière simple de copier ou cloner un DataRow?

Je suis à la recherche d'un moyen simple de faire un clone d'un DataRow. Un peu comme prendre un instantané de la Ligne et de la sauver. 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;

Sera-ce juste jeu Instantané de la ItemArray référence à point à celle de la Source ou faut-il réellement faire une copie distincte? Dois-je faire à la place?

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

EDIT: je ne pense pas que le deuxième extrait de code compile en fait.

211voto

Cuong Le Points 29324

Vous pouvez utiliser ImportRow pour copier une Ligne de DataTable à DataTable avec le même schéma:

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

Mise à jour:

Avec votre nouvelle Édition, je crois:

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

va travailler

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X