【C#】forを使ってデータテーブルから行を取得する【DataTable】

2020年2月10日

forで行を取得する(index)

今回のループ処理は for文を使用します。

for 文の指定は、以下の内容とします。

initializer セクションは、0 から始める。

condition セクションは、dt.Rows.Count の件数分繰り返しを行う。

iterator セクションは、カウントアップさせる。

ここでは、行を取得した後、 HINMEI(品名) をコンソールに出力するようにしていきます。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");
    // 行追加
    dt.Rows.Add("りんご", "3", "50", "150");
    dt.Rows.Add("ぶどう", "1", "200", "200");
    dt.Rows.Add("みかん", "10", "30", "300");

    /* 
      今回の内容はここから
    */ 
    // forで行を取得する(index)
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        Console.WriteLine(dt.Rows[i]["HINMEI"]);
    }
    
    // ログ出力内容
    // りんご
    // ぶどう
    // みかん


forで行を取得する(DataRow)

dt.Rows にインデックス指定をして、 DataRowを取得します。

取得したDataRowの HINMEI(品名) を コンソールに出力していきます。

※for 文は変わらないため、説明を省略します。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");
    // 行追加
    dt.Rows.Add("りんご", "3", "50", "150");
    dt.Rows.Add("ぶどう", "1", "200", "200");
    dt.Rows.Add("みかん", "10", "30", "300");

    /* 
      今回の内容はここから
    */ 
    // forで行を取得する(DataRow)
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        DataRow dr = dt.Rows[i];
        Console.WriteLine(dr["HINMEI"]);
    }
    
    // ログ出力内容
    // りんご
    // ぶどう
    // みかん

コピペですぐ試せるソースコード

上記で記載した2点のソースコードをまとめました。

ソースコードをコピペするとそれぞれの動作が確認できると思います。


        private void DataTable_Get_Rows_For()
        {
            DataTable dt = new DataTable();

            // データテーブルの名前を指定
            dt.TableName = "FRUIT";

            // 列追加
            dt.Columns.Add("HINMEI");
            dt.Columns.Add("SURYO");
            dt.Columns.Add("TANKA");
            dt.Columns.Add("KINGAKU");
            // 行追加
            dt.Rows.Add("りんご", "3", "50", "150");
            dt.Rows.Add("ぶどう", "1", "200", "200");
            dt.Rows.Add("みかん", "10", "30", "300");

            /* 
              今回の内容はここから
            */ 
            // forで行を取得する(index)
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Console.WriteLine(dt.Rows[i]["HINMEI"]);
            }
            // ログ出力内容
            // りんご
            // ぶどう
            // みかん

            // forで行を取得する(DataRow)
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];
                Console.WriteLine(dr["HINMEI"]);
            }    
            // ログ出力内容
            // りんご
            // ぶどう
            // みかん
        }


まとめ

今回は複数の方法で、ループ処理で行を取得するソースコードを記載しました。

用途にあったやり方、自分のやりやすい実装を採用していきましょう。


Microsoft 公式ページ

DataRowCollection クラス
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datarowcollection?view=netframework-4.0


for (C# リファレンス)
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/for