我有两个具有相同架构的数据表,我想了解它们之间的区别。我正在为此申请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()
的全部目的,对吧?
答案 0 :(得分:1)
检查可用于保留状态的方法重载:
保留更改 布尔值
true
,以保留当前DataTable
中的更改;除此以外false
。
在此处检查测试:https://dotnetfiddle.net/KI7xPe