可以创建一 DataSet 个副本,以便在不影响原始数据的情况下处理数据,或者使用 数据集中的数据子集。 复制 数据集时,可以:
创建 数据集的确切副本,包括架构、数据、行状态信息和行版本。
创建一个
DataSet,其包含现有 数据集的模式,但仅包括已修改的行。 可以返回已修改的所有行,或指定特定的 DataRowState。 有关行状态的详细信息,请参阅 行状态和行版本。仅复制架构或关系结构
DataSet,而不复制任何行。 使用 DataTable 可以将行导入到现有的 ImportRow 中。
若要创建包含架构和数据的DataSet确切副本,请使用Copy数据集的方法。 下面的代码示例演示如何创建 数据集的确切副本。
Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();
若要创建包含架构且仅表示DataRowState值,仅返回具有指定行状态的行GetChanges。 下面的代码示例演示如何在调用 DataRowState 时传递。
' 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数据集的方法。 还可以使用 ImportRow 方法将现有行添加到克隆的 DataSetDataTable 中。
ImportRow 向指定表添加数据、行状态和行版本信息。 仅当列名匹配且数据类型兼容时,才会添加列值。
下面的代码示例创建一个 DataSet 的克隆,并将原始 DataSet 中属于 CountryRegion 列值为“德国”的客户的行添加到克隆中的 DataSet 表中。
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);