Copiar contenido de DataSet (ADO.NET)
Actualización: November 2007
Se puede crear una copia de DataSet de forma que se pueda trabajar con datos sin afectar a los datos originales o bien se puede trabajar con un subconjunto de los datos desde un DataSet. Al copiar un DataSet es posible:
Crear una copia exacta del DataSet, incluyendo el esquema, los datos, la información de estado de fila y las versiones de fila.
Crear un DataSet que contenga el esquema de un DataSet existente, pero sólo las filas modificadas. Se pueden devolver todas las filas modificadas o especificar un DataRowState determinado. Para obtener más información sobre estados de fila, vea Estados de fila y versiones de fila.
Copiar el esquema, o estructura relacional, del DataSet únicamente, sin copiar ninguna fila. Las filas se pueden importar en una DataTable existente mediante ImportRow.
Para crear una copia exacta del DataSet que incluya tanto el esquema como los datos, utilice el método Copy del DataSet. En el ejemplo siguiente se muestra cómo se crea una copia exacta del DataSet.
Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();
Para crear una copia del DataSet que incluya el esquema y sólo los datos que representen filas Added, Modified o Deleted, utilice el método GetChanges del DataSet. También es posible utilizar GetChanges para devolver únicamente las filas que tengan un estado de fila determinado si se pasa el valor DataRowState al llamar a GetChanges. En el siguiente ejemplo de código 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 que sólo incluya el esquema, utilice el métodoClone del DataSet. También es posible agregar filas existentes al DataSet clonado mediante el método ImportRow de DataTable.ImportRow agrega datos, el estado de fila e información de versión de fila a la tabla especificada. Los valores de columna sólo se agregan cuando los nombres de columna coinciden y el tipo de datos es compatible.
En el siguiente ejemplo de código se crea un clon de un DataSet y se agregan la filas del DataSet original a la tabla Customers del DataSet clonado para aquellos clientes cuya columna CountryRegion tenga el valor "Germany".
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 germanyCustomers = customerDataSet.Clone();
DataRow[] copyRows =
customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");
DataTable customerTable = germanyCustomers.Tables["Customers"];
foreach (DataRow copyRow in copyRows)
customerTable.ImportRow(copyRow);