Fun Coding

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

【C#】データテーブルの行の検索の方法

データテーブルの行の検索の方法をサンプルコードを交えて解説したいと思います。

説明

方法
メソッド名
説明
Select 指定した条件を使って検索
Find 指定した主キーを使って検索
Select

・指定した条件に一致する行を返す。
・条件がない場合は全ての行を返す。

Find

・指定した主キーに一致する行を返す。
・指定した主キーに一致する行がない場合はnullを返す。

コード
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.PrimaryKey = new DataColumn[] { table.Columns[0] };

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


            // テーブルの行を検索
            DataRow[] selectedRows = table.Select("年齢 < 30");

            // テーブルの行を出力
            Console.WriteLine("Select");
            foreach(DataRow dataRow in selectedRows) {
                foreach(DataColumn dataColumn in dataRow.Table.Columns) {
                    Console.WriteLine(dataColumn.ColumnName + " : " + dataRow[dataColumn.ColumnName]);
                }
                Console.WriteLine();
            }


            // テーブルの行を検索
            DataRow? selectedRow = table.Rows.Find("五郎");

            // テーブルの行を出力
            Console.WriteLine("Find");
            if(selectedRow != null) {
                foreach(DataColumn dataColumn in selectedRow.Table.Columns) {
                    Console.WriteLine(dataColumn.ColumnName + " : " + selectedRow[dataColumn.ColumnName]);
                }
            }
        }
    }
}
出力
Select
名前 : 一郎
年齢 : 10

名前 : 二郎
年齢 : 20

Find
名前 : 五郎
年齢 : 50