1.在表的所有列上设置主键
2.合并表进行比较
3.确定并从 DataRowState 中提取重复行
此过程仅提取重复(完全匹配)的行。
也可以只提取有差异的行(不匹配)。

由于它使用主键,因此如果表中包含 Null,则无法使用它。

整个过程

【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
(1) 数据表的构建
(2) 主键设置
③AcceptChange并将表2合并为表1
④从表1中提取修改的行
(5) 提取结果的日志输出
分为五个序列。
下面让我们一一来看看。

(1) 数据表的构建

【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
创建两个具有相同结构的数据表。
为了清楚起见,这里我们使用“构建数据表”活动,
可以通过 Excel 中的 ReadRange 或从 Web 上抓取数据来创建数据表。

表的内容如下。
【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
红框内的记录是两个表中都存在(重复)的记录。
这一次,我们将提取这条红色记录。

(2) 主键设置

【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
使用表 1 中的所有列设置主键(更准确地说,复合主键)。

存储 DataColumn 的集合类型变量数据列1并声明
在迭代中将表 1 的所有 DataColumns 添加到该变量中,
在表1的PrimaryKey(主键)数据列1用 ToArray 转换为数组并传递。

③AcceptChange并将表2合并为表1

【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
对表1执行AcceptChange方法得到DataRowState后,
将表 2 合并到表 1 中。

④从表1中提取修改的行

【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
合并端的表 1 有 DataRowState 分为以下三个。

  • 添加: 添加的记录 = 只存在于表 2 中的记录
  • 修改的:changed 记录 = 两个表中都存在记录
  • 不变: 未改变的记录 = 只存在于表 1 中的记录

如果您使用 GetChanges 方法检索 DataRowState 已修改的记录,您将能够检索(重复)两个表中都存在的记录。
如果要获取有差异的记录,只需获取 DataRowState 为 Additional 和 Unchanged 的​​记录并合并它们即可。

(5) 提取结果的日志输出

【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
将提取的记录(表)转换为字符串并输出到日志。
结果如下。
【UiPath】同じ構造のデータテーブル同士を比較して重複する行を抽出する
只有两个表中都存在的记录才能被成功提取。
谢谢你的辛劳工作。

操作环境

UiPath.System.Activity 21.10.4

参考


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308626274.html

相关文章: