C# 合并数据表不需要';不改变状态

C# 合并数据表不需要';不改变状态,c#,merge,datatable,C#,Merge,Datatable,我有两个具有相同模式的数据表,我想得到它们之间的差异。我正在尝试为此应用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.

我有两个具有相同模式的数据表,我想得到它们之间的差异。我正在尝试为此应用
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
,但值不同(“test”和“test2”)。 合并之后,我希望datatable
o
有一行id=1,value=“test2”。这是真的。我还希望一行具有
RowState=“Modified”
。这不是真的,它有
RowState=“Unchanged”
。为什么会这样


我已经阅读了两个大致相似的问题的答案,您应该在每一行调用
EndEdit()
。当然这不是答案,这就是
Merge()
,对吗?

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

保留更改布尔值

true
,以保留当前
数据表中的更改;否则
false


检查这里的测试:

我在我的真实代码上测试了重载,但它在那里不起作用。我想我还有另一个bug需要分类,因为这似乎完全正确。谢谢,不客气。如果你在玩代码,有时试着做一个“干净”和“构建”的过程。有时对我有用!