Поделиться через


Копирование содержимого 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);

См. также

Ссылки

DataSet

DataTable

Другие ресурсы

Объекты DataSet, DataTable и DataView (ADO.NET)