curry
November 13, 2023, 2:29am
1
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のレコード数になり、
データ件数が多いと処理時間が長くなります。
もっとスマートな方法はないでしょうか。
Yoichi
(Yoichi)
November 13, 2023, 2:49am
2
こんにちは
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
curry
November 13, 2023, 3:02am
3
こちらの方法で無事処理時間の改善に成功しました!
ご教示いただきありがとうございました!
system
(system)
Closed
November 16, 2023, 3:02am
4
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.