C# Datatable Select 抽出 並べ替え

今回は、C#でDatatableに格納されているデータをさらに絞り込んで、取得する方法を紹介します。

必須の技術ではないですが、こんなのがあるのを知っていると便利だと思います。

DatatableにはSelectメソッドがあり、このメソッドを使用することでDatatableから値を取得できます。

Datatable Select抽出 並べ替え

Selectの使い方

DatatableのSelectの使い方

Datatable.Select("抽出条件","表示順");

こんな感じのデータテーブルがあるとします。oldが10のデータのみ抽出しましょう。

このデータから、oldが10のデータを抽出してみましょう。

DataRow[] dtRows = dt.Select("old=10");

このようにDataTable.Selectをすることで、DataRow型の配列を取得することができます。

 

データを抽出する例を記載してみました

//データテーブル作成
DataTable dt = new DataTable();
dt.Columns.Add("name");
dt.Columns.Add("old");
dt.Columns.Add("height");

DataRow dtRow;

for(int i = 0; i < 10; i++)
{
    dtRow = dt.NewRow();
    dtRow["name"] = "ひろにも";
    if (i < 5)
    {
        dtRow["old"] = "10";
    }
    else
    {
        dtRow["old"] = "20";
    }
    dtRow["height"] = (100 + 10 * i).ToString();

    dt.Rows.Add(dtRow);
}

//データ抽出
DataRow[] dtRows = dt.Select("old=10");

//結果出力
for (int rowindex = 0; rowindex < dtRows.Length; rowindex++)
{
    for (int colindex = 0; colindex < dtRows[rowindex].ItemArray.Length; colindex++)
    {
        Console.Write(dtRows[rowindex][colindex] + " ");
    }
    Console.WriteLine();
}
結果
ひろにも 10 100 
ひろにも 10 110 
ひろにも 10 120 
ひろにも 10 130 
ひろにも 10 140 

 

表示順

次は、Datatableの表示順を変更してみましょう。

先ほどと同じデータでheightの降順(大きい順)に表示してみます。DESCを末尾につけてください。

heightの小さい順の時は、DESCを付けないだけです。

DataRow[] dtRows = dt.Select("","height DESC");
結果
ひろにも 20 190 
ひろにも 20 180 
ひろにも 20 170 
ひろにも 20 160 
ひろにも 20 150 
ひろにも 10 140 
ひろにも 10 130 
ひろにも 10 120 
ひろにも 10 110 
ひろにも 10 100 

複数条件の場合

条件がold = 10 height = 110 のデータを抽出してみましょう。表示順をname height(降順)に並べ替えましょう。

DataRow[] dtRows = dt.Select("old=10 and height=110", "name,height DESC");
結果
ひろにも 10 110 

 

条件がold = 10 もしくは height = 190 のデータを抽出してみましょう。表示順をname height(降順)に並べ替えましょう。

DataRow[] dtRows = dt.Select("old=10 or height=190", "name,height DESC");
結果
ひろにも 20 190 
ひろにも 10 140 
ひろにも 10 130 
ひろにも 10 120 
ひろにも 10 110 
ひろにも 10 100 

 

まとめ

Datatable.Select("抽出条件","表示順");

この書き方さえ使えれば、自由にDatatableの値を抽出できますね。

ぜひ使ってみましょう。

 

C#の記事一覧

おすすめの記事