こんなコレクションがあったとします。
例えば、フィールド1~3で値が重複している行は削除したいとします。
現状、BluePrismの標準VBOには、複数列の重複を見て行削除するオブジェクトはなかったため、自作しました。
想定する結果は以下の通りです。
3、4行目が値が重複しているので、3行目を残して4行目を削除しています。
上記の通り、残す行はコレクションデータの上から数えて最初の行とします。
入力
最大3フィールドを見て重複判定できるようにしています。
出力
ソースコード
Try
If Target_Field1 = "" Then
Success = False
Message = "Target_Field1は必須項目です。"
Exit Sub
End If
Dim New_Collection As DataTable
New_Collection = Collection_In.Clone
Dim count As Long = 0
For Each r As DataRow In Collection_In.Rows
If count = 0 Then
New_Collection.ImportRow(r)
Else
Dim find_rows As DataRow()
find_rows = New_Collection.Select(Target_Field1 & " = '" & r(Target_Field1) & "'" & _
If(Target_Field2 <> "", " AND " & Target_Field2 & " = '" & r(Target_Field2) & "'", "") & _
If(Target_Field3 <> "", " AND " & Target_Field3 & " = '" & r(Target_Field3) & "'", ""))
If find_rows.Length = 0 Then
New_Collection.ImportRow(r)
End If
End If
count = count + 1
Next
Deduplication_Collection = New_Collection.DefaultView.ToTable
Success = True
Message = ""
Catch e As Exception
Success = False
Message = e.Message
End Try
サンプル
https://github.com/falcslab/blueprism/tree/collection
BPA オブジェクト – コレクション重複削除.xml