データテーブルの列加工と突合

dtAの「idA」列の値を加工(xxxx,0000,xxxxの0000を比較対象にしたい)した値が
「idB」列に存在している場合
dtAを基に作成したdtCの「一致フラグ」列にTrueを入力し出力したいです。

【dtA】

idA カラムA
aaaa,0123,zzzz
aaaa,4567,zzzz
aaaa,8901,zzzz

【dtB】

idB カラムB
1234
8901
4567
1654

【dtC】

idA カラムA 一致フラグ
aaaa,0123,zzzz
aaaa,4567,zzzz True
aaaa,8901,zzzz True

現在はdtAの繰り返しの中にdtBの繰り返しを入れているのですが、
dtAのレコード数×dtBのレコード数になり、
データ件数が多いと処理時間が長くなります。
もっとスマートな方法はないでしょうか。

こんにちは

UIPathでのループを減らすのでしたらまずは以下が考えられます。

Main.xaml

あるいは以下のように書くことも可能です
シーケンス.xaml

Dim arrStr As String() = dtB.AsEnumerable.Select(Function(r) r(0).ToString).ToArray()
dtA.AsEnumerable.Where(Function(r) arrStr.Any(Function(s) r(0).ToString.Contains(s))).ToList().ForEach(Sub(r)
    r(1)="True"
End Sub
)

Sample20231113-2L_Windows.zip (5.7 KB)

1 Like

こちらの方法で無事処理時間の改善に成功しました!
ご教示いただきありがとうございました!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.