修改本地数据集时修改主数据集

Main dataset is getting modified when local dataset is modified

下面是我的代码。

DataSet ds = new DataSet();
ds = dsComplaints;
DataTable dt = new DataTable();
dt = ds.Tables[0];
DataRow dr = dt.NewRow();
dr.ItemArray = new object[] {"--Select Complaint--" };
dt.Rows.InsertAt(dr, 0);

dsComplaints 是全局声明的,它有主要数据。我正在将它复制到本地数据集 ds。然后我将 table 从 ds 分配给数据 table。我在数据 table 中添加一行(select 投诉)。但是当插入发生时,我的主要数据集,即 dsComplaints 也添加了一行。我怎样才能避免这种情况。我不知道为什么会这样。

您可以使用 Copy 方法创建相同 DataSet 的新副本,而不是仅使用原始副本的引用来避免这种情况:

DataSet ds = dsComplaints.Copy();

来自 MSDN 文档 这就是 Copy 所做的:

Copies both the structure and data for this DataSet.

现在您可以对副本执行任何需要的操作,并且不会影响 DataSet 的原始版本。