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