Compartir a través de


Copiar contenido de DataSet

Se puede crear una copia de un 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 los estados de fila, vea Estados de fila y versiones de fila.
  • Copiar el esquema, o estructura relacional, del DataSet únicamente, sin copiar ninguna fila. Es posible importar filas en una DataTable existente mediante ImportRow.

Para crear una copia exacta del DataSet que incluya tanto el esquema como los datos, hay que utilizar el método Copy del DataSet. En el ejemplo siguiente se muestra cómo se crea una copia exacta del DataSet.

Dim copyDS As DataSet = custDS.Copy()
[C#]
DataSet copyDS = custDS.Copy();

Para crear una copia de un DataSet que incluya el esquema y sólo los datos que representen filas Added, Modified o Deleted, hay que utilizar 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 changeDS As DataSet = custDS.GetChanges()
' Copy only new rows.
Dim addedDS As DataSet = custDS.GetChanges(DataRowState.Added)
[C#]
// Copy all changes.
DataSet changeDS = custDS.GetChanges();
// Copy only new rows.
DataSet addedDS = custDS.GetChanges(DataRowState.Added);

Para crear una copia de un DataSet que sólo incluya el esquema, hay que utilizar el método Clone del DataSet. También es posible agregar filas existentes al DataSet clonado mediante el método ImportRow de la DataTable. ImportRow agregará datos, el estado de fila e información de versión de fila a la tabla especificada. Sólo se agregarán los valores de columna cuando los nombres de columna coincidan y el tipo de datos sea compatible.

En el siguiente ejemplo de código se crea un clon de un DataSet y se agregan las filas del DataSet original a la tabla Customers del clon del DataSet para aquellos clientes cuya columna Country tenga el valor "Germany".

Dim custGermanyDS As DataSet = custDS.Clone()

Dim copyRows() As DataRow = custDS.Tables("Customers").Select("Country = 'Germany'")

Dim custTable As DataTable = custGermanyDS.Tables("Customers")
Dim copyRow As DataRow

For Each copyRow In copyRows
  custTable.ImportRow(copyRow)
Next
[C#]
DataSet custGermanyDS = custDS.Clone();

DataRow[] copyRows = custDS.Tables["Customers"].Select("Country = 'Germany'");

DataTable custTable = custGermanyDS.Tables["Customers"];

foreach (DataRow copyRow in copyRows)
  custTable.ImportRow(copyRow);

Vea también

Crear y utilizar DataSets | DataSet (Clase) | DataTable (Clase)