Share via


Gegevenssetinhoud kopiëren

U kunt een kopie van een DataSet kopie maken, zodat u met gegevens kunt werken zonder dat dit van invloed is op de oorspronkelijke gegevens of met een subset van de gegevens uit een DataSet. Wanneer u een DataSet kopieert, kunt u het volgende doen:

  • Maak een exacte kopie van de DataSet, met inbegrip van het schema, gegevens, rijstatusinformatie en rijversies.

  • Maak een DataSet die het schema van een bestaande DataSet bevat, maar alleen rijen die zijn gewijzigd. U kunt alle rijen retourneren die zijn gewijzigd of een specifieke DataRowState opgeven. Zie Rijstatussen en rijversies voor meer informatie over rijstatussen.

  • Kopieer het schema of de relationele structuur van de DataSet alleen zonder rijen te kopiëren. Rijen kunnen worden geïmporteerd in een bestaand DataTable gebruik ImportRow.

Als u een exacte kopie wilt maken van de DataSet die zowel schema als gegevens bevat, gebruikt u de Copy methode van de DataSet. In het volgende codevoorbeeld ziet u hoe u een exacte kopie van de DataSet maakt.

Dim copyDataSet As DataSet = customerDataSet.Copy()  
DataSet copyDataSet = customerDataSet.Copy();  

Als u een kopie wilt maken van een DataSet die een schema bevat en alleen de gegevens die de rijen Toegevoegd, Gewijzigd of Verwijderd vertegenwoordigen, gebruikt u de GetChanges methode van de DataSet. U kunt GetChanges ook gebruiken om alleen rijen met een opgegeven rijstatus te retourneren door een DataRowState-waarde door te geven bij het aanroepen van GetChanges. In het volgende codevoorbeeld ziet u hoe u een DataRowState doorgeeft bij het aanroepen van GetChanges.

' Copy all changes.  
Dim changeDataSet As DataSet = customerDataSet.GetChanges()  
' Copy only new rows.  
Dim addedDataSetAs DataSet = _  
    customerDataSet.GetChanges(DataRowState.Added)  
// Copy all changes.  
DataSet changeDataSet = customerDataSet.GetChanges();  
// Copy only new rows.  
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);  

Als u een kopie wilt maken van een DataSet die alleen een schema bevat, gebruikt u de Clone methode van de DataSet. U kunt ook bestaande rijen toevoegen aan de gekloonde DataSet met behulp van de ImportRow-methode van de Gegevenstabel. ImportRow voegt gegevens, rijstatus en rijversiegegevens toe aan de opgegeven tabel. Kolomwaarden worden alleen toegevoegd als de kolomnaam overeenkomt en het gegevenstype compatibel is.

In het volgende codevoorbeeld wordt een kloon van een DataSet gemaakt en worden vervolgens de rijen uit de oorspronkelijke DataSet toegevoegd aan de tabel Klanten in de DataSet-kloon voor klanten waar de kolom LandRegio de waarde Duitsland heeft.

Dim customerDataSet As New DataSet  
        customerDataSet.Tables.Add(New DataTable("Customers"))  
        customerDataSet.Tables("Customers").Columns.Add("Name", GetType(String))  
        customerDataSet.Tables("Customers").Columns.Add("CountryRegion", GetType(String))  
        customerDataSet.Tables("Customers").Rows.Add("Juan", "Spain")  
        customerDataSet.Tables("Customers").Rows.Add("Johann", "Germany")  
        customerDataSet.Tables("Customers").Rows.Add("John", "UK")  
  
Dim germanyCustomers As DataSet = customerDataSet.Clone()  
  
Dim copyRows() As DataRow = _  
  customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")  
  
Dim customerTable As DataTable = germanyCustomers.Tables("Customers")  
Dim copyRow As DataRow  
  
For Each copyRow In copyRows  
  customerTable.ImportRow(copyRow)  
Next  
DataSet customerDataSet = new DataSet();  
customerDataSet.Tables.Add(new DataTable("Customers"));  
customerDataSet.Tables["Customers"].Columns.Add("Name", typeof(string));  
customerDataSet.Tables["Customers"].Columns.Add("CountryRegion", typeof(string));  
customerDataSet.Tables["Customers"].Rows.Add("Juan", "Spain");  
customerDataSet.Tables["Customers"].Rows.Add("Johann", "Germany");  
customerDataSet.Tables["Customers"].Rows.Add("John", "UK");  
  
DataSet germanyCustomers = customerDataSet.Clone();  
  
DataRow[] copyRows =
  customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");  
  
DataTable customerTable = germanyCustomers.Tables["Customers"];  
  
foreach (DataRow copyRow in copyRows)  
  customerTable.ImportRow(copyRow);  

Zie ook