Fun Coding

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

【C#】データテーブルの行のインデックスを取得する方法(IndexOf)

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

説明

指定したDataRowを検索し、インデックス番号を返す。

ポイント

・取得できるインデックス番号は1つ
・指定したDataRowがない場合は-1を返す

コード
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("一郎", 10);
            table.Rows.Add("一郎", 20);
            table.Rows.Add("三郎", 30);
            table.Rows.Add("四郎", 40);
            table.Rows.Add("五郎", 50);

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


            // テーブルの行のインデックスを取得
            foreach(DataRow dataRow in selectedRows) {
                int index = table.Rows.IndexOf(dataRow);
                Console.WriteLine("インデックス : " + index);
            }
        }
    }
}
出力
インデックス : 1
インデックス : 3