この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
データテーブル*は、メモリ上において(主にデータベースの)テーブルを表すためのオブジェクトである。一般的にデータテーブルは、データベースから取得したレコード(行データ)を保持するのに使われる。
データテーブルのレコードをソート(並べ替え)したい場合には、データベースからレコードを取得するときに発行するSQL文(SELECT文)でソート条件を指定すれば、データテーブル内のレコードはソートされた状態となる。
しかし、複数の検索結果を1つのデータテーブルにマージした場合や、データベース以外のデータソースからデータテーブルを作成した場合などにもレコードをソートしたいなら、データテーブル上でソートを行う必要がある。本稿ではこの方法について解説する。
* DataTableクラス(System.Data名前空間)のオブジェクト。詳細については「ADO.NET基礎講座:第4回 データセットを使ったデータベース・アクセス」を参照。
データテーブル自体にはソート機能が用意されていない。このためデータテーブルをソートするには、まず空のデータテーブルを作成し、そこにソート済みのレコードを順に挿入していくことになる。
レコードのソートについては、データビュー(DataViewクラス(System.Data名前空間)のオブジェクト)を利用して、ソートされたデータテーブルの「ビュー」を作成すればよい。
具体的には次図のような手順によりデータテーブルをソートすることができる。
(1)のデータテーブルのコピーについては、DataTableクラスのCloneメソッドにより行える。このメソッドは、新しいデータテーブルのインスタンスを作成し、元のデータテーブルの構造のみをコピーする。
また、(3)のレコードのコピーについては、DataTableクラスのImportRowメソッドが利用できる。データビューの各レコードは、レコードのビューであるDataRowViewオブジェクト(System.Data名前空間)として扱われるが、そのRowプロパティにより、元のデータテーブルにあるレコードであるDataRowオブジェクト(System.Data名前空間)にアクセスできる。
次のサンプル・プログラムは実際にデータテーブルを作成し、ソートを行っている例だ。
このプログラムでは、@ITのRSS情報を読み取ってデータテーブルを作成している。このRSS情報の読み取りについては「TIPS:[ASP.NET]DataGridコントロールでデータセットを表示するには?」の後半部分で解説しているので、そちらを参照していただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.