c# - 合并数据表不会改变行状态
问题描述
我有两个具有相同架构的数据表,我想了解它们之间的差异。我正在尝试申请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()
,对吧?
解决方案
检查可用于保留状态的方法重载:
preserveChanges 布尔值
true
, 保存当前的变化DataTable
;否则false
。
在此处检查测试:https ://dotnetfiddle.net/KI7xPe
推荐阅读
- ios - 如何使用 Xamarin 在 OnAppearing() 方法中显示获奖广告
- excel - 在记录的 Pivot 宏上获取运行时错误 5
- javascript - JS - SyntaxError:标识符“financeManager”已经被声明
- c# - 我们可以从同一个可执行文件中调试 .csx(添加断点和监视变量状态)吗?
- python - Django 记录器设置
- reactjs - onClick 不会从 Child 组件更新 Parent 的状态
- sql - 'SQLNCLI10.1' 提供程序未在 VS 2019 的本地计算机上注册
- docker - 如何在 ECS 中查看绑定挂载路径中的目录
- r - 分层ggplot
- python - 有人可以告诉我一个更有效/更短的方法来编写这个 python random # 程序吗?