- ベストアンサー
CSVから読み込んだデータの保持とソート
お世話になっています。VB.NET+CSVに関する質問です。 現在VB.NETで、CSVから読み込んだレコードをある項目を基準に並び替え、一覧にして画面に表示するというプログラムを作っています。 こういう場合のCSVから読み込んだデータの保持の方法と、その並び替えの方法にはどういうやり方がありますか? いくつかのパターンがあると思いますが、教えてください。 以下はCSVの情報です。 ・1行が1件のレコード ・項目1を昇順で並び替える ・CSV項目:項目1(半角英数字)項目2(タブ)項目3(半角・全角文字) ・CSV件数:1000行以下
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
すみません、ANo.3です。 もうちょっと書いておいた方が良いかもしれませんね。 私が書いている方法では、まずは、例えば構造体の配列等にCSVの内容を入れておきます。 で、IComparerを持つクラスの中で、比較したい構造体の「メンバを指定」しつつ (ここが単純なSortメソッドでは不可能)比較し、大小関係を <0、=0、>0 で 指定してやれば良いです。 但しその際、Compareメソッド内で、比較する2値(Object型)を、該当の構造体に 変換してからでないと、比較できません。 CTypeかDirectCastで変換は可能かと思います。 …このぐらい書いておけば大丈夫かな?
その他の回答 (4)
- nfushi
- ベストアンサー率31% (39/122)
No.1です。 ADO.NETが使えない制約って結構つらいですね。 では別解。 ・SortedDictionary<string, List<string>>にデータを格納する。 第一引数が項目1の値で、List<string>にCSV項目を格納。 ・VS2008ならList<string>にCSVデータを格納してLINQでSortする。 これでどうしょうか?
お礼
回答ありがとうございます。 DataGridViewとDataTableの組み合わせで作ることになりました。
- K-Sogacchi
- ベストアンサー率53% (50/93)
下のURLなんかが参考になるかもです。 配列のソート方法を自分で設定する方法です。 2値の比較方法をIComparerインターフェイスを持つ自作クラスに定義し、 そのインスタンスをArray.Sortメソッドの第2引数にする事で、 自由にソート方法を定義できます。 ヘルプからも、ある程度の情報は取得できると思いますので、参照してみてください。
- hotosys
- ベストアンサー率67% (97/143)
SortedやSortのあるListboxやDataGridViewに読み込めは保持も並び替えも表示もできる。
お礼
回答ありがとうございます。 DataGridViewとDataTableの組み合わせで作ることになりました。
- nfushi
- ベストアンサー率31% (39/122)
私ならADO.NETで処理すると思います。 SQLで取得していたら並び替えが楽だと思います。 集計関数を使えるのもメリットになるでしょう。 VB.NETで処理しているサイトのリンクを張っておきます。 ご参考に。
お礼
回答ありがとうございます。 大変参考にななりました。ただ書き忘れていたんですが、 今回のプログラムではADO.NETを使うことができません。 それ以外の方法を教えてもらえると助かります。
お礼
回答ありがとうございます。 IComparerとても参考になりました。 ただ結局DataGridViewとDataTableの組み合わせで作ることになりました。