プロが教えるわが家の防犯対策術!

お世話になっています。VB.NET+CSVに関する質問です。
現在VB.NETで、CSVから読み込んだレコードをある項目を基準に並び替え、一覧にして画面に表示するというプログラムを作っています。

こういう場合のCSVから読み込んだデータの保持の方法と、その並び替えの方法にはどういうやり方がありますか?
いくつかのパターンがあると思いますが、教えてください。

以下はCSVの情報です。
・1行が1件のレコード
・項目1を昇順で並び替える
・CSV項目:項目1(半角英数字)項目2(タブ)項目3(半角・全角文字)
・CSV件数:1000行以下

A 回答 (5件)

No.1です。


ADO.NETが使えない制約って結構つらいですね。
では別解。
・SortedDictionary<string, List<string>>にデータを格納する。
第一引数が項目1の値で、List<string>にCSV項目を格納。
・VS2008ならList<string>にCSVデータを格納してLINQでSortする。
これでどうしょうか?

参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/429 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
DataGridViewとDataTableの組み合わせで作ることになりました。

お礼日時:2008/06/08 11:15

すみません、ANo.3です。


もうちょっと書いておいた方が良いかもしれませんね。
私が書いている方法では、まずは、例えば構造体の配列等にCSVの内容を入れておきます。
で、IComparerを持つクラスの中で、比較したい構造体の「メンバを指定」しつつ
(ここが単純なSortメソッドでは不可能)比較し、大小関係を <0、=0、>0 で
指定してやれば良いです。
但しその際、Compareメソッド内で、比較する2値(Object型)を、該当の構造体に
変換してからでないと、比較できません。
CTypeかDirectCastで変換は可能かと思います。
…このぐらい書いておけば大丈夫かな?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
IComparerとても参考になりました。
ただ結局DataGridViewとDataTableの組み合わせで作ることになりました。

お礼日時:2008/06/08 11:13

下のURLなんかが参考になるかもです。


配列のソート方法を自分で設定する方法です。
2値の比較方法をIComparerインターフェイスを持つ自作クラスに定義し、
そのインスタンスをArray.Sortメソッドの第2引数にする事で、
自由にソート方法を定義できます。
ヘルプからも、ある程度の情報は取得できると思いますので、参照してみてください。

参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/215 …
    • good
    • 0

SortedやSortのあるListboxやDataGridViewに読み込めは保持も並び替えも表示もできる。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
DataGridViewとDataTableの組み合わせで作ることになりました。

お礼日時:2008/06/08 11:16

私ならADO.NETで処理すると思います。


SQLで取得していたら並び替えが楽だと思います。
集計関数を使えるのもメリットになるでしょう。
VB.NETで処理しているサイトのリンクを張っておきます。
ご参考に。

参考URL:http://park5.wakwak.com/~weblab/selectTextFile.h …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
大変参考にななりました。ただ書き忘れていたんですが、
今回のプログラムではADO.NETを使うことができません。
それ以外の方法を教えてもらえると助かります。

お礼日時:2008/06/01 20:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!