合并数据表不会改变行状态

时间:2019-01-14 15:10:42

标签: 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.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()的全部目的,对吧?

1 个答案:

答案 0 :(得分:1)

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

  

保留更改 布尔值

     

true,以保留当前DataTable中的更改;除此以外   false

Link

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