Share via


Copie du contenu d'un DataSet

Vous pouvez créer une copie d'un DataSet pour pouvoir travailler sur ses données sans affecter les données d'origine ou travailler seulement sur un sous-ensemble des données d'un DataSet. Lorsque vous copiez un DataSet, vous pouvez effectuer l'une des actions suivantes :

  • Créer une copie exacte du DataSet, y compris les informations de schéma, les données, l'état des lignes et leur version.
  • Créer un DataSet qui contiendra le schéma d'un DataSet existant, mais uniquement les lignes qui ont été modifiées. Vous pouvez retourner toutes les lignes qui ont été modifiées ou seulement celles ayant un DataRowState que vous spécifierez. Pour plus d'informations sur les états de ligne, consultez États et versions de ligne.
  • Copier uniquement le schéma, ou la structure relationnelle, du DataSet, en ne copiant aucune ligne. Les lignes peuvent être importées dans un DataTable existant à l'aide de ImportRow.

Pour créer une copie exacte du DataSet qui inclue à la fois le schéma et les données, utilisez la méthode Copy du DataSet. L'exemple de code suivant montre comment créer une copie exacte du DataSet.

Dim copyDS As DataSet = custDS.Copy()
[C#]
DataSet copyDS = custDS.Copy();

Pour créer une copie d'un DataSet qui inclue le schéma et seulement les données représentant les lignes Added, Modified ou Deleted, utilisez la méthode GetChanges du DataSet. Vous pouvez également utiliser GetChanges pour ne retourner que les lignes assorties d'un état de ligne spécifié en passant une valeur DataRowState lors de l'appel de GetChanges. L'exemple de code suivant montre comment passer un DataRowState lors de l'appel de GetChanges.

' Copy all changes.
Dim changeDS As DataSet = custDS.GetChanges()
' Copy only new rows.
Dim addedDS As DataSet = custDS.GetChanges(DataRowState.Added)
[C#]
// Copy all changes.
DataSet changeDS = custDS.GetChanges();
// Copy only new rows.
DataSet addedDS = custDS.GetChanges(DataRowState.Added);

Pour créer une copie d'un DataSet qui inclue uniquement le schéma, utilisez la méthode Clone du DataSet. Vous pouvez aussi ajouter des lignes existantes au DataSet cloné à l'aide de la méthode ImportRow du DataTable. ImportRow ajoutera à la table spécifiée des données ainsi que des informations d'état et de version de ligne. Les valeurs des colonnes ne seront ajoutées que si le nom des colonnes est identique et le type de données compatible.

L'exemple de code suivant crée un clone d'un DataSet, puis ajoute à la table Customers du clone du DataSet les lignes du DataSet d'origine relatives aux clients pour lesquels la colonne Country a la valeur « Germany ».

Dim custGermanyDS As DataSet = custDS.Clone()

Dim copyRows() As DataRow = custDS.Tables("Customers").Select("Country = 'Germany'")

Dim custTable As DataTable = custGermanyDS.Tables("Customers")
Dim copyRow As DataRow

For Each copyRow In copyRows
  custTable.ImportRow(copyRow)
Next
[C#]
DataSet custGermanyDS = custDS.Clone();

DataRow[] copyRows = custDS.Tables["Customers"].Select("Country = 'Germany'");

DataTable custTable = custGermanyDS.Tables["Customers"];

foreach (DataRow copyRow in copyRows)
  custTable.ImportRow(copyRow);

Voir aussi

Création et utilisation de DataSets | DataSet, classe | DataTable, classe