Копирование содержимого DataSet (ADO.NET)
Можно создать копию объекта DataSet, чтобы работать с данными, не затрагивая первоначальные данные, или обрабатывать подмножество данных из DataSet. При копировании объекта DataSet можно:
Создать точную копию DataSet, включая схему, данные, информацию о состоянии строк и версиях строк.
Создать DataSet, который имеет схему существующего DataSet, но содержит только строки, которые были изменены. Можно возвратить все строки, которые были изменены, или задать конкретное значение DataRowState. Дополнительные сведения о состояниях строк см. в разделе Состояния и версии строк.
Скопировать только схему (реляционную структуру) DataSet, не копируя никаких строк. Строки могут быть импортированы в существующий объект DataTable с использованием ImportRow.
Чтобы создать точную копию DataSet, которая включает и схему, и данные, используйте метод Copy набора данных DataSet. В следующем примере кода показано, как создать точную копию DataSet.
Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();
Чтобы создать копию объекта DataSet, которая будет включать в себя схему и только данные, представляющие строки Added, Modified или Deleted, используйте метод GetChanges объекта DataSet. Можно также использовать метод GetChanges для возврата только строк с указанным состоянием строки, передавая значение DataRowState при вызове GetChanges. В следующем примере кода показано, как передать значение DataRowState при вызове метода 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);
Чтобы создать копию объекта DataSet, которая будет включать в себя только схему, используйте метод Clone объекта DataSet. Можно также добавить существующие строки к клонированному DataSet, используя метод ImportRow объекта DataTable. Метод ImportRow добавляет к указанной таблице данные, сведения о состоянии строк и о версиях строк. Значения столбца добавляются только в тех случаях, если имена столбцов согласуются, а типы данных являются совместимыми.
В следующем примере кода создается клон DataSet, а затем в таблицу Customers добавляются строки первоначального DataSet из клона DataSet, относящиеся к заказчикам, для которых в столбце CountryRegion имеется значение «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);