はじめに
この投稿は、RPAツール「UiPath」での 実装例 について記事です。
以前にも同様の記事を書いていましたが、内容が古かったので新しく記事にしました。
「UiPath Friends もくもく会 2022年06月開催 2022-06-25(土)9:00 - 12:00」で書きました。
データテーブルの操作 シリーズ
DataTable の操作方法について記載した記事が、他にもあります。参考まで。
データテーブルの行を並び替えたい
データテーブルの行を「特定の列」で並び替える方法は以下の「4つ」あります。
1. 標準アクティビティの「データテーブルを並び替え」で実施
2. DataTableの「Select」メソッドの第2引数で で並び替え
3. Dataview で並び替え
4. LINQ で並び替え
1. 標準アクティビティの「データテーブルを並び替え」で実施
UiPath標準で、並び替え用のアクティビティ「データテーブルを並び替え」が提供されています。
「並び替えに指定する列」と「順序(Ascending(昇順)、Descending(降順))」を指定できます。
このアクティビティでは 「並び替えに指定できる列は1つのみ」 です。(2022年06月現在)
例えば、DataTableの「A」列で「降順」並び替えたい場合は、以下のように指定します。
2. DataTableの「Select」メソッドの第2引数で で並び替え
DataTableには「Select」というメソッドが有り、第1引数で「絞り込み条件」、第2引数で「並び替え」を指定できます。第1引数に何も指定しなければ、絞り込みはされない
ので、並び替えだけをすることも出来ます。
※ 標準アクティビティでは出来なかった「複数の列を指定して並び替え」も出来ます。
'// ageが高い順に並び替え
dt_selected = dt.Select("","age desc").CopyToDataTable
'// teamごとに、ageが高い順に並び替え
dt_selected = dt.Select("","team, age desc").CopyToDataTable
3. DataView で並び替え
DataTable には「DataView」という「並べ替え、フィルター処理、検索、編集」ができる機能があり、これを利用してデータを並び替えることが出来ます。SQL の「order by」に近いイメージです。
※ 標準アクティビティでは出来なかった「複数の列を指定して並び替え」も出来ます。
System.Data.DataView 型の変数を用意して「New Dataview(元のデータテーブル変数)」でセットし「.Sort」で並び替えの指定(Order by指定)を書きます。
4. LINQ で並び替え
.NET にはLINQ(リンク)という「並び替え」や「連続処理」を行うための機能があり、UiPath でも使用できます。
「.OrderBy/OrderByDescending」で並び替え列の指定を指定し、複数の列で並び替えたい場合は、「.ThenBy/.ThenByDescending」で繋げていきます。
上記画像の例でいうと、以下のように記述しています。
'// Team で昇順、Point で降順に並び替え
Dt_Before.AsEnumerable().OrderBy(Function(r) r("Team")).ThenByDescending(Function(r) r("Point")).CopyToDataTable()
終わりに
いかがでしたでしょうか。実装時に役立てば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。