データテーブルを複数キーでソートするのに、
DT.AsEnumerable().OrderBy(function(x) x(“キー1”).ToString()).ThenBy(function(y) y(“キー2”).ToString()).CopyToDataTable()
として試してみたのですが、
『AsEnumerableは、System.Data.DataTableのメンバーではありません』
というエラーが発生してしまいます。
「かんたんDataTableアクティビティ」も使ってみたのですが、
SortKeyに、 “キー1 Asc, キー2 Asc”
を指定したのですが、これもエラーになりました。
何れかの方法で、ソートできれば良いのですが、修正箇所をアドバイス頂けないでしょうか。
よろしくお願いします。
Yoichi
(Yoichi)
2
こんにちは
『AsEnumerableは、System.Data.DataTableのメンバーではありません』
というエラーが発生してしまいます。
このエラーはしばしば発生します。解消方法は以下参照ください。
あるいは新規にxamlファイルを追加してみると、そちらでは使えたりしますので、そちらを試してみる手もあります。
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
4
これはどのようなエラーになりましたか?
作者としては気になる情報です。詳細をお聞かせいただけませんか?
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
5
あと、汚い方法ですが、キー1とキー2をタブで連結し、1列にまとめて、それをキーとしてソートしてあげるとか。。。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
6
ここを DT.AsEnumerable.~
(()
を抜く)に変更してみて試していただけますか?
ソートするのには以下の方法もあります。
DT.Select(“”,“キー1,キー2”).CopyToDataTable
※LINQより見やすく、文字数も少ないので簡単なものはこちらを主に使っています。
以上、ご参考まで。
※ここから脱線します。
selectはlinqより遅いという話があったので測定してみました。
※比較にはこれを使いました。
DT.AsEnumerable().OrderBy(function(x) x(“キー1”).ToString()).ThenBy(function(y) y(“キー2”).ToString()).CopyToDataTable()
デバッグ時はselectの方が遅かったのですが、パブリッシュ後は同じぐらいでした。
データ量1万件 select:40ms linq:48ms
データ量10万件 select:550ms linq:529.5ms
データ量100万件 select:6162ms linq:6764ms
※数回の平均です。
※パブリッシュ時に最適化でもかかっているのでしょうか。。。
1 Like
はなっち様
プロパティの設定がそもそも間違っているのかもしれませんので、
ご教示頂けるとありがたいです。
“列B△D,列A△ACS” となっていたので、
“キー1 Asc, キー2 Asc”
と設定したのですが、ソートされていませんでした。
また、出力パネルに下記のように、出力されていました。
Resultにも、"False"が返ってきています。
よろしくお願い致します。
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
9
パラメタで、"国語 D,名前 A"に指定して実行したところ、ソートされました。
更に、"国△語 D,名前 A"と指定したところ、結果がFalseでした。
指定の列名が正しいか、「列情報のみをログ出力」などで確認してみてください。
cheez_RPA様
エラーが消えて、ソートされました!
別のプログラムで、同様に設定した際は、()ありでも大丈夫だったのですが…
また同じエラーが出たら、()の削除をやってみます。
ありがとうございました!
1 Like
Yoichi様
エラーが発生しているファイルに、追記してみたところ、
エラーが消えました。
ありがとうございます!
1 Like
kyd_has様
Selectで、ソートできました。
データ量での比較も、とても参考になりました。
ありがとうございました!
1 Like
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
13
あとはかんたんDataTableだけがダメな子だな。
ソート前のデータテーブルを出力して、列名をコピーして使ってみたのですが、
上手くいかず・・・
条件を、
“キー1 Asc キー2 Asc”
として、「,」を削除したら、ソートできました!
「,」は、使用しない方がよいでしょうか?
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
15
カスタムアクティビティのソースを見たところ、カンマは必要でした。
“キー1 Asc,キー2 Asc”
の指定はあっています。
なんでだろう。。。
他、回答者の方法で実装した方がいいですね。お手を煩わせてすみません。
もうちょっとこちらでカスタムアクビティの試験をしてみます。
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
16
そう言えば、 noir_chatさんのログの状況をみたら、○○番号の指定はしてあっても、◆のところには出てきていませんねぇ。となると、アクティビティが側では、○○番号がなかったって事になります。
HANACCHI様
私が初心者過ぎて、見よう見まねで作っている状況でして・・・
こちらこそ、お手を煩わせてしまい、申し訳ありません。
「,」を削除したときのログになります。
他の方法でソートしたときと、同様にソートすることができました。
◆には、「〇〇番号」が入っていないですね。。。