【发布时间】:2017-02-09 10:04:03
【问题描述】:
假设我有两个 DataTable dt1 和 dt2,我将行添加到 dt1 并执行 AcceptChanges,然后 dt2 = dt1.Copy 并继续将行添加到 dt2
示例1:-
dt1 dt2
--------------- ---------------
| item | qty | | item | qty |
--------------- ---------------
| Apple | 1 | | Apple | 1 |
| Orange| 1 | | Orange| 1 |
--------------- | Banana| 2 |
---------------
Dim dt_compare as DataTable = dt2.GetChanges()
dt_compare
---------------
| item | qty |
---------------
| Banana| 2 |
---------------
上面的结果是我得到的,也是我想要的,但是请看Example2
示例2:-
dt1 dt2
--------------- ---------------
| item | qty | | item | qty |
--------------- ---------------
| Apple | 1 | | Apple | 1 |
| Orange| 1 | | Orange| 10 |
--------------- ---------------
Dim dt_compare as DataTable = dt2.GetChanges()
dt_compare
---------------
| item | qty |
---------------
| Orange| 10 |
---------------
如果我只是更改值,当我使用 GetChanges() 时它会返回相同的值。我怎样才能得到结果 9 而不是 10?
【问题讨论】:
-
您要的是数量上的差异?即 dt2.qty - dt2.qty?你必须自己做。 GetChanges 查找数据中的绝对变化。它说“有区别”,然后报告是/否,并列出更改。它不知道您想对该数据执行什么数学运算 - 毕竟,更改甚至发生在数字字段上只是偶然的。然后,可能有许多不同的可能计算要做,它怎么知道你需要什么?但它给了你机会 - 现在你知道有区别,你可以自己计算以适应自己。