「繰り返し (データ テーブルの各行) (For Each Row in Data Table) 」アクティビティ内では普通に行を削除しようとしてもエラーになります。
以下は繰り返し (データ テーブルの各行) の中で「データ行を削除」アクティビティを使用する例です。
商品名がリンゴの行だけ削除しようとしていますが、
「コレクションが変更されました」でエラーになってしまいます。
対策としては繰り返し (データ テーブルの各行) を使わずに「繰り返し (コレクションの各要素) 」や「データテーブルをフィルター」アクティビティで代用するケースが多いと思いますが、
「メソッドを呼び出し」アクティビティを使うことで、繰り返し (データ テーブルの各行) でも特定行を削除することができます。
①繰り返しに入る前に、DataTable変数を対象にAcceptChangesメソッドを実行
②繰り返しの中で、DataRow変数を対象にDeleteメソッドを実行
③繰り返しを抜けた直後に、DataTable変数を対象にAcceptChangesメソッドを実行
事前にAcceptChangesメソッドを実行することで、Deleteメソッドを実行しても次のAcceptChangesまで行の削除が保留されます。
これにより、繰り返しの中では行削除されないためエラーにならず、繰り返しを抜けたところでDeleteメソッドを実行した特定行が一括で削除されるという流れになります。
動作環境
UiPath.System.Activities 22.10.3
参考