Kopieren von DataSet-InhaltenCopying DataSet Contents

Sie können eine Kopie von DataSet erstellen, damit Sie mit Daten arbeiten können, ohne dass sich dies auf die ursprünglichen Daten auswirkt, oder mit einer Teilmenge der Daten aus einem DataSetarbeiten.You can create a copy of a DataSet so that you can work with data without affecting the original data, or work with a subset of the data from a DataSet. Beim Kopieren eines DataSetskönnen Sie folgende Aktionen ausführen:When copying a DataSet, you can:

  • Erstellen Sie eine exakte Kopie des DataSets, einschließlich Schema, Daten, Zeilen Zustandsinformationen und Zeilen Versionen.Create an exact copy of the DataSet, including the schema, data, row state information, and row versions.

  • Erstellen Sie ein DataSet , das das Schema eines vorhandenen DataSetsenthält, aber nur Zeilen, die geändert wurden.Create a DataSet that contains the schema of an existing DataSet, but only rows that have been modified. Sie können alle geänderten Zeilen oder einen bestimmten DataRowState-Wert zurückgeben.You can return all rows that have been modified, or specify a specific DataRowState. Weitere Informationen zu Zeilen Zuständen finden Sie unter Zeilen Status und Zeilen Versionen.For more information about row states, see Row States and Row Versions.

  • Kopieren Sie das Schema oder die relationale Struktur des DataSets nur, ohne Zeilen zu kopieren.Copy the schema, or relational structure, of the DataSet only, without copying any rows. Zeilen können mit DataTable in eine vorhandene ImportRow importiert werden.Rows can be imported into an existing DataTable using ImportRow.

Verwenden Sie die Copy -Methode des DataSets, um eine exakte Kopie des DataSets zu erstellen, das sowohl das Schema als auch die Daten enthält.To create an exact copy of the DataSet that includes both schema and data, use the Copy method of the DataSet. Im folgenden Codebeispiel wird gezeigt, wie eine exakte Kopie des DataSetserstellt wird.The following code example shows how to create an exact copy of the DataSet.

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

Verwenden Sie dieGetChanges -Methode des DataSets, um eine Kopie eines DataSets zu erstellen, das Schema und nur die Daten enthält, die hinzugefügte, geänderte oder Gelöschte Zeilen darstellen.To create a copy of a DataSet that includes schema and only the data representing Added, Modified, or Deleted rows, use the GetChanges method of the DataSet. Sie können GetChanges auch verwenden, um nur Zeilen mit einem angegebenen Zeilen Status zurückzugeben, indem Sie beim Aufrufen von GetChangeseinen DataRowState -Wert übergeben.You can also use GetChanges to return only rows with a specified row state by passing a DataRowState value when calling GetChanges. Im folgenden Codebeispiel wird gezeigt, wie ein DataRowState beim Aufrufen von GetChangesübergeben wird.The following code example shows how to pass a DataRowState when calling 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);  

Um eine Kopie eines DataSets zu erstellen, das nur das Schema enthält, Clone verwenden Sie die-Methode des DataSets.To create a copy of a DataSet that only includes schema, use the Clone method of the DataSet. Sie können dem geklonten DataSet auch vorhandene Zeilen mithilfe der ImportRow -Methode der DatenTabelle hinzufügen.You can also add existing rows to the cloned DataSet using the ImportRow method of the DataTable. ImportRow fügt der angegebenen Tabelle Informationen zu Daten, Zeilen Status und Zeilen Version hinzu.ImportRow adds data, row state, and row version information to the specified table. Spaltenwerte werden nur hinzugefügt, wenn der Spaltenname übereinstimmt und der Datentyp kompatibel ist.Column values are added only where the column name matches and the data type is compatible.

Im folgenden Codebeispiel wird ein Klon eines DataSets erstellt und dann die Zeilen aus dem ursprünglichen DataSet der Customers -Tabelle im DataSet -Klon für Kunden hinzugefügt, in der die CountryRegion -Spalte den Wert "Deutschland ".The following code example creates a clone of a DataSet and then adds the rows from the original DataSet to the Customers table in the DataSet clone for customers where the CountryRegion column has the value "Germany".

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);  

Siehe auchSee also