トップ回答者
dataGridViewで列ソートをより高速にするには?

質問
回答
-
いろいろ調べてみたんですが、DataViewのSortはどうもパフォーマンスが良くないようですね。Connectにも上がっていて次のバージョンで考察するみたいなことが5年前に書いてあったのですが・・・
Slow performance in DataView
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=93608&wa=wsignin1.0代替としては、データーベースでソートを行わせた結果を取得し直すか、DataViewを直接バインドせずにListなどのジェネリックコレクションでUIオブジェクトを作成してLinqでソートし、それをバインドするなどが考えられると思います。今回の件に限らず、UIオブジェクトを作るのがスマートだと思います。ただし、ソートのパフォーマンスがどれぐらいでるのかわかりませんし、改修量はかなり多いので、データーベースでソートが現実的なような気がします。UIオブジェクトの件は以下のページの下の方に書かれています。今すぐにこの対応は現行アプリケーションでは難しいと思いますので、将来の参考にされると良いと思います。
(参考)
Part 2. スマートクライアントにおける単体入力データ検証
http://blogs.msdn.com/b/nakama/archive/2009/02/26/part-2.aspxちょっとこれぐらいしか思いつきません。すみません。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
すべての返信
-
DataViewのコンストラクタでSortなどが指定でき、この際にインデックスが構築されます。仕様に合うかどうかわかりませんが、可能であればあらかじめインデックスが構築されたDataViewを用意されると、多少は改善されるかもしれません。
(参考)
DataView のパフォーマンス
http://msdn.microsoft.com/ja-jp/library/bb669089.aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
いろいろ調べてみたんですが、DataViewのSortはどうもパフォーマンスが良くないようですね。Connectにも上がっていて次のバージョンで考察するみたいなことが5年前に書いてあったのですが・・・
Slow performance in DataView
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=93608&wa=wsignin1.0代替としては、データーベースでソートを行わせた結果を取得し直すか、DataViewを直接バインドせずにListなどのジェネリックコレクションでUIオブジェクトを作成してLinqでソートし、それをバインドするなどが考えられると思います。今回の件に限らず、UIオブジェクトを作るのがスマートだと思います。ただし、ソートのパフォーマンスがどれぐらいでるのかわかりませんし、改修量はかなり多いので、データーベースでソートが現実的なような気がします。UIオブジェクトの件は以下のページの下の方に書かれています。今すぐにこの対応は現行アプリケーションでは難しいと思いますので、将来の参考にされると良いと思います。
(参考)
Part 2. スマートクライアントにおける単体入力データ検証
http://blogs.msdn.com/b/nakama/archive/2009/02/26/part-2.aspxちょっとこれぐらいしか思いつきません。すみません。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/