1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[BluePrism]Collectionの重複行を削除するにはどうしたらいいか(まだ悩み中なので誰か教えてください)

Last updated at Posted at 2019-12-06

#これを書いた理由

レコードの重複を除く処理って普通に必要なので。
そして、これを今のかしこい子がやるようにシンプルにきれいにやりたいのです。

#初心者レベルの私(文系の元コボラー)が安直に思いつく方法

1.チェック列を作成
2.Collectionをソート
3.行の内容を退避
4.次の行と、退避した前の内容が一致していたらチェック列にマーク
5.マークした列を削除

できるんですけど、実際いまそうやって作られてるやつがいっぱいあるのですけど、
ダサい……。

#単純に重複行を削除するだけのオブジェクトを作ります。
たとえばこういうCollectionがあったとして
重複A.png
2行目と6行目に佐伯真彩が重複しているので、6行目が削除したい行になります。

##重複行を削除するためのオブジェクト

###必要っぽいのは
DataView.ToTable メソッド

distinct Boolean
true の場合、返された DataTable にはすべての列に対して重複しない値を持つ行が含まれています。 既定値は false です。

つまり「ToTable(true)」って書けば重複行を削除してくれるらしい。
で、Collectionをこの「DataView」にするためには
DataTable.DefaultView プロパティ

どっちも名前空間はSystem.Data(デフォルトであるやつ)なので、Initialiseに新たに名前空間とかを設定する必要はありません。

###これを踏まえてコードステージに1行書きます。
入力引数は処理したいCollection、出力引数はカラのCollectionです。

outCollection=inCollection.DefaultView.ToTable(true)

オブジェクトに書くのはこれだけ
フロー.png

これで重複行を削除するオブジェクトができます。

#単純じゃない場合(重複列を指定したい)※未解決
たとえばデータに連番がついていたら、行全体が重複ってことにはなりません。
「連番を除く列で重複だったら」ということにしないといけないのですけど……。
重複B.png

###さっきの「DataView.ToTable メソッド」のパラメータにもうひとつ書いてあるのを使う

columnNames String[]
返された DataTable に含まれる列名の一覧を格納する文字列の配列。 DataTable には、この配列内に表示される順序で、指定された列が含まれています。

そしたらフィルタしたい列名を後ろにつけたらいいのかなーって

outCollection=inCollection.DefaultView.ToTable(true,"氏")

これだと出力がこうなってしまいます。指定した列しか出ない。
重複失敗1.png

###複数列をフィルタ対象にするのは

できます。「String[]」って書いてあるからこれは配列です。なので複数書けます。引数を後ろへつなげるだけです。

outCollection=inCollection.DefaultView.ToTable(true,"氏","名","氏カナ","名カナ")

でもこれだとやっぱり上のと同じように、フィルタ対象ではない列(例だと「SEQ」)が出力に出てこないです。
フィルタ後.png

#いま詰まっていること

  • 出力するときには、入力したCollectionと同じ全部の列で出力されたい

つまり上の例で言うと、こうなることです。
重複ゴール.png

#まだ終わりではないです

Qiitaで質問するって、使い方としてどうかと思いましたが、誰か教えてください。
あと、皆様のとこの御社では、Blue Prismで重複削除の処理を実装するときには、どういう書き方をされているのでしょうか。教えてください。

1
3
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?