Copia di contenuti di datasetCopying DataSet Contents

È possibile creare una copia di un DataSet in modo da poter utilizzare i dati senza influire sui dati originali, o utilizzare un subset dei dati da un DataSet.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. Quando si copia un DataSet, è possibile:When copying a DataSet, you can:

  • Creare una copia esatta del DataSet, inclusi schema, dati, le informazioni sullo stato di riga e le versioni di riga.Create an exact copy of the DataSet, including the schema, data, row state information, and row versions.

  • Creare un DataSet contenente lo schema di un oggetto esistente DataSet, ma solo le righe che sono state modificate.Create a DataSet that contains the schema of an existing DataSet, but only rows that have been modified. È possibile restituire tutte le righe che sono state modificate oppure specificare un determinato DataRowState.You can return all rows that have been modified, or specify a specific DataRowState. Per ulteriori informazioni sugli stati delle righe, vedere stati delle righe e le versioni di riga.For more information about row states, see Row States and Row Versions.

  • Copiare lo schema, o struttura relazionale, del DataSet solo, senza copiare alcuna riga.Copy the schema, or relational structure, of the DataSet only, without copying any rows. È possibile importare le righe in un tipo DataTable esistente usando il metodo ImportRow.Rows can be imported into an existing DataTable using ImportRow.

Per creare una copia esatta del DataSet che include sia dello schema e dati, utilizzare il Copy metodo il set di dati.To create an exact copy of the DataSet that includes both schema and data, use the Copy method of the DataSet. Esempio di codice seguente viene illustrato come creare una copia esatta del DataSet.The following code example shows how to create an exact copy of the DataSet.

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

Per creare una copia di un DataSet che include lo schema e solo i dati che rappresentano Added, Modified, o Deleted righe, utilizzare il GetChanges metodo il DataSet.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. È inoltre possibile utilizzare GetChanges per restituire solo le righe con uno stato di riga specificata passando un DataRowState valore quando si chiama GetChanges.You can also use GetChanges to return only rows with a specified row state by passing a DataRowState value when calling GetChanges. Esempio di codice seguente viene illustrato come passare un DataRowState quando si chiama GetChanges.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);  

Per creare una copia di un DataSet che include solo schema, utilizzare il Clone metodo il set di dati.To create a copy of a DataSet that only includes schema, use the Clone method of the DataSet. È anche possibile aggiungere righe esistenti al DataSet utilizzando il ImportRow metodo il DataTable.You can also add existing rows to the cloned DataSet using the ImportRow method of the DataTable. ImportRow aggiunge i dati, lo stato di riga e le informazioni sulla versione di riga alla tabella specificata.ImportRow adds data, row state, and row version information to the specified table. I valori di colonna vengono aggiunti solo nel caso in cui i nomi di colonna corrispondano e il tipo di dati sia compatibile.Column values are added only where the column name matches and the data type is compatible.

Esempio di codice seguente crea un clone di un DataSet e le righe vengono aggiunte dalla versione originale set di dati per il clienti tabella il set di dati duplicato per i clienti in cui il CountryRegion colonna ha il valore "Germany".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);  

Vedere ancheSee Also

DataSet
DataTable
Oggetti DataSet, DataTable e DataViewDataSets, DataTables, and DataViews
Provider gestiti ADO.NET e Centro per sviluppatori di set di datiADO.NET Managed Providers and DataSet Developer Center