カテゴリー
Software Tech

[C#備忘録]データをソート | AmpiTa Project

 データを扱っていると任意の方法で並べ替えをしたくなることが多々あるので実装していますが、その方法をまとめておくことにしました。




  1. DataGridViewの基本形
  2. DataTableの基本形
  3. DataTableを複数の列で並べ替え
  4. Dictionaryで並べ替え




DataGridViewの基本形

 データグリッドビュー(DataGridView)を並べ替える方法はいくつかありますが、基本的な方法は下記だと思います。

dataGridView01.Sort(dataGridView01.Columns[2], System.ComponentModel.ListSortDirection.Descending);

 dataGridView01 というデータグリッドビューを並べ替える指示です。

 基準となるのは第2列(Columns[2])です。

 並び方は降順(Descending)です。昇順にしたいときは『Ascending』に置き換えます。




DataTableの基本形

 データテーブル(DataTable)やデータセット(DataSet)を並べ替える方法はいくつかありますが、基本的な方法は下記だと思います。

dtEX = dtEX.Select("", "ID Desc").CopyToDataTable();

 dtEXというデータテーブルを並べ替える指示です。既にある dtEX というデータテーブルを並び替えた状態で複製(CopyToDataTable)する指示です。

 基準となるのは『ID』という列です。テキストで明示的に指示しています。

 並び方は降順(Desc)です。昇順にしたいときは『Asc』に置き換えます。

 基準列をテキストではなく番号で指定することもできます。少々姑息的にも見えますが、下記の方法がわかりやすいです。

dtEX = dtEX.Select("", dtEX.Columns[2].ColumnName + " Asc").CopyToDataTable();

 上記方法で仮にエラーがあったときには、どのような指示の問題があったのかわかりやすく表示されます。下図は『二次医療圏コード』という列指定に問題があることがわかります。




DataTableを複数の列で並べ替え

 データテーブル(DataTable)やデータセット(DataSet)の並べ替えを、複数の列を使って複合的に並べ替える方法があります。

 下記は、最初に『CLASS』列を昇順で並べます。例えば1班、2班、3班と並べます。

 次に、『Age』列を降順に並べます。年齢の高い順に並べるような指示です。

dtEX = dtEX.Select("", "CLASS Asc,Age Desc").Copy

 複合的な並べ替えをすることで、見た目に分かりやすい一覧表をつくることができます。

 私たちの開発物で言うと、例えば医療機関一覧を病床数順に並べた上で、医療機関名を第二指示しとすることで、同じ病床数の中で名前の順に並びます。

 医療機器のリコール集計であれば、日付順で並べた上で、メーカー名で並べることで同日中のリコール情報が見やすくなることがあります。




Dictionaryで並べ替え