Kopiera datauppsättningsinnehåll
Du kan skapa en kopia av en DataSet så att du kan arbeta med data utan att påverka de ursprungliga data eller arbeta med en delmängd av data från en DataSet. När du kopierar en DataSet kan du:
Skapa en exakt kopia av DataSet, inklusive schema, data, radtillståndsinformation och radversioner.
Skapa en DataSet som innehåller schemat för en befintlig DataSet, men bara rader som har ändrats. Du kan returnera alla rader som har ändrats eller ange en specifik DataRowState. Mer information om radtillstånd finns i Radtillstånd och Radversioner.
Kopiera endast schemat eller relationsstrukturen för DataSet , utan att kopiera några rader. Rader kan importeras till en befintlig DataTable med .ImportRow
Om du vill skapa en exakt kopia av DataSet som innehåller både schema och data använder du datauppsättningens Copy metod. I följande kodexempel visas hur du skapar en exakt kopia av DataSet.
Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();
Om du vill skapa en kopia av en DataSet som innehåller schema och endast data som representerar rader som har lagts till, ändrats eller tagits bort använder du datauppsättningens GetChanges metod. Du kan också använda GetChanges för att endast returnera rader med ett angivet radtillstånd genom att skicka ett DataRowState-värde när du anropar GetChanges. Följande kodexempel visar hur du skickar en DataRowState när du anropar 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);
Om du vill skapa en kopia av en DataSet som endast innehåller schema använder du datauppsättningens Clone metod. Du kan också lägga till befintliga rader i den klonade DataSet med hjälp av metoden ImportRow i DataTable. ImportRow lägger till information om data, radtillstånd och radversion i den angivna tabellen. Kolumnvärden läggs bara till där kolumnnamnet matchar och datatypen är kompatibel.
I följande kodexempel skapas en klon av en DataSet och sedan läggs raderna från den ursprungliga DataSet till tabellen Kunder i DataSet-klonen för kunder där kolumnen CountryRegion har värdet "Tyskland".
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);