首页 > 解决方案 > 合并数据表不会改变行状态

问题描述

我有两个具有相同架构的数据表,我想了解它们之间的差异。我正在尝试申请Merge这个。代码更容易阅读,举个小例子:

//Create first datatable
var o = new DataTable{Columns = { "id", "value"}};
//Add a datarow
o.Rows.Add(1, "test");
//Set PK
o.PrimaryKey = new[]{o.Columns[0]};
//Set RowState to Unchanged
o.AcceptChanges();

//Create copy of first datatable
var m = o.Copy();
//Change a value 
m.Rows[0]["value"] = "test2";
//Set RowState to Unchanged
m.AcceptChanges();

//Merge
o.Merge(m);

直到合并,一切都按预期工作;我有两个数据表,每个数据表都有一行相同id但不同value(“test”和“test2”)。合并后,我希望数据表o有一行 id=1 和 value="test2"。这是真实的。我也希望有一排有RowState="Modified"。这不是真的,它有RowState="Unchanged"。为什么是这样?

我已经阅读了您应该EndEdit()在每一行上提出的大致相似问题的几个答案。这肯定不是答案,这就是 的全部目的Merge(),对吧?

标签: c#mergedatatable

解决方案


检查可用于保留状态的方法重载:

preserveChanges 布尔值

true, 保存当前的变化DataTable;否则 false

关联

在此处检查测试:https ://dotnetfiddle.net/KI7xPe


推荐阅读