Compartir a través de


Copiar contenido del conjunto de datos

Puede crear una copia de un DataSet para que pueda trabajar con datos sin afectar a los datos originales o trabajar con un subconjunto de datos de un DataSet. Al copiar un conjunto de datos, puede hacer lo siguiente:

  • Cree una copia exacta del conjunto de datos, incluidos el esquema, los datos, la información de estado de fila y las versiones de fila.

  • Cree un DataSet objeto que contenga el esquema de un conjunto de datos existente, pero solo las filas que se han modificado. Puede devolver todas las filas que se han modificado o especificar un dataRowState específico. Para obtener más información sobre los estados de fila, consulte Estados de fila y Versiones de fila.

  • Copie el esquema, o la estructura relacional, del DataSet único, sin copiar ninguna fila. Las filas se pueden importar en un existente DataTable mediante ImportRow.

Para crear una copia exacta del DataSet que incluye el esquema y los datos, use el método Copy de DataSet. En el ejemplo de código siguiente se muestra cómo crear una copia exacta de DataSet.

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

Para crear una copia de un DataSet que incluya esquema y solo los datos que representan Agregado, Modificado o Deleted filas, use el GetChanges método de DataSet. También puede usar GetChanges para devolver solo filas con un estado de fila especificado pasando un DataRowState valor al llamar a GetChanges. En el ejemplo de código siguiente se muestra cómo pasar un DataRowState al llamar a 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);

Para crear una copia de un DataSet objeto que solo incluya el esquema, use el Clone método de DataSet. También puede agregar filas existentes al clonado DataSet mediante el ImportRow método de DataTable. ImportRow agrega información de datos, estado de fila y versión de fila a la tabla especificada. Los valores de columna solo se agregan cuando el nombre de columna coincide y el tipo de datos es compatible.

En el ejemplo de código siguiente, se crea un clon de DataSet y, a continuación, se agregan las filas del DataSet original a la tabla Customers del clon DataSet para los clientes donde la columna CountryRegion tiene el valor "Alemania".

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

Consulte también