Fun Coding

学んだことを記録していきます!

【C#】データテーブルの行をソートする方法(Select)

データテーブルの行をソートする方法に「Select」メソッドがあります。
サンプルコードを交えて解説したいと思います。

説明

データテーブルの行をコピーする。

ポイント

・第1引数はフィルターの文字列
・第2引数は列とソートの方向の文字列

コード
using System;
using System.Data;

namespace Sample {
    /// <summary>
    /// メインプログラム
    /// </summary>
    public class Program {
        /// <summary>
        /// テーブルの行のソート
        /// </summary>
        static void Main() {
            // テーブルの生成
            var table = new DataTable();

            // テーブルに列を追加
            table.Columns.Add("名前", typeof(string));
            table.Columns.Add("年齢", typeof(int));

            // テーブルに行を追加
            table.Rows.Add("五郎", 50);
            table.Rows.Add("一郎", 10);
            table.Rows.Add("四郎", 40);
            table.Rows.Add("二郎", 20);
            table.Rows.Add("三郎", 30);


            // 昇順にソート
            DataRow[] asc = table.Select("", "年齢 ASC");

            // ソートした行を出力
            Console.WriteLine("昇順");
            foreach(DataRow dataRow in asc) {
                Console.WriteLine("名前 : " + dataRow[0] + " 年齢 : " + dataRow[1]);
            }
            Console.WriteLine();



            // 降順にソート
            DataRow[] desc = table.Select("", "年齢 DESC");

            // ソートした行を出力
            Console.WriteLine("降順");
            foreach(DataRow dataRow in desc) {
                Console.WriteLine("名前 : " + dataRow[0] + "、 年齢 : " + dataRow[1]);
            }
            Console.WriteLine();
        }
    }
}
出力
昇順
名前 : 一郎、 年齢 : 10
名前 : 二郎、 年齢 : 20
名前 : 三郎、 年齢 : 30
名前 : 四郎、 年齢 : 40
名前 : 五郎、 年齢 : 50

降順
名前 : 五郎、 年齢 : 50
名前 : 四郎、 年齢 : 40
名前 : 三郎、 年齢 : 30
名前 : 二郎、 年齢 : 20
名前 : 一郎、 年齢 : 10