データ操作

[C#] DataTableをソートする

DataTableをSortするサンプルです。

.Selectメソッドを使用するパターンと、
LINQを使用するパターンの2パターンがあります。

サンプルソース

サンプルとして以下のDataTableを使用します。


using System.Data;

//データテーブルの生成
DataTable dt = new DataTable("PrefTable");

//データカラムの定義
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Population", typeof(int));

//データテーブルにテータを追加
dt.Rows.Add("北海道", 5248552);
dt.Rows.Add("青森県", 1246138);
dt.Rows.Add("岩手県", 1226430);
dt.Rows.Add("宮城県", 2303160);
dt.Rows.Add("秋田県", 965968);

例1)Population列を降順でソートしてSELECTする(Selectメソッド版)


// DataTableを検索する
DataRow[] drResult = dt.Select("", "Population desc");

// 検索結果をコンソールに出力する
foreach (var row in drResult)
{
  Console.WriteLine(row[0] + ":" + row[1]);
}

結果

北海道:5248552
宮城県:2303160
青森県:1246138
岩手県:1226430
秋田県:965968

.Selectメソッドの第2引数にソート条件を文字列で指定します。

ソート列を複数指定する事も出来ます。
 (例)「Population desc, Name asc」

Selectの条件(Where)を指定したい場合は、第1引数に指定できます。
 → [C#] DataTableから行を検索(SELECT)する

例2)Population列を降順でソートしてSELECTする(LINQ版)


// DataTableを検索する
DataRow[] drResult
 = dt.AsEnumerable().OrderByDescending(x => x.Field("Population")).ToArray();

// 検索結果をコンソールに出力する
foreach (var row in drResult)
{
  Console.WriteLine(row[0] + ":" + row[1]);
}

結果

北海道:5248552
宮城県:2303160
青森県:1246138
岩手県:1226430
秋田県:965968

LINQの.OrderBy(昇順)、.OrderByDescending(降順)メソッドでソート条件を指定します。

備考

関連記事

-データ操作
-