読者です 読者をやめる 読者になる 読者になる

FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【ASP.NET・C#】DataTableからDataRowを参照し、特定の列の値をとってくるバリエーション

【今回の紹介】

データテーブルにDBからデータを詰め込んだ後、特定の列のデータだけ
取得したい場合のコーディングについてまとめたので、メモ。

主にDataTableからどのようにDataRowにアクセスして、値を参照するかという流れ



【内容】


以下のように、何通りかのパターンがある。
並べてみると、やはりforeach文が簡潔でわかりやすいように見える。
だが、サンプルソースや現在かかわっているPJでもfor文を使用している箇所も多い。



【参考ソース】

        //db接続情報の設定
        string dbcn = ConfigurationManager.AppSettings["con.str"];
        //sqlの設定
        StringBuilder strb = new StringBuilder();
        strb.Append("select  ");
        strb.Append(" * ");
        strb.Append(" from table_2 ");

        //datatableを設定 テーブルのデータをいれる箱
        DataTable dt = new DataTable();
        //テーブルからデータを取得してきてくれるdatatableを取得 テーブルから接続情報と抽出条件をもとにデータを取得するポンプ
        SqlDataAdapter da = new SqlDataAdapter(strb.ToString(), dbcn);
        //sqlを実行し、結果をdatatableに格納する
        da.Fill(dt);


        //直接DataTableから直接DataRowsにアクセスする①
       
        for(int i = 0; i < dt.Rows.Count;i++){
            
            Debug.WriteLine("①" + dt.Rows[i]["A"]);
         }

        //DataRowsに格納してからデータを取得する②
        for (int i = 0; i < dt.Select("E = '3' ").Length; i++)
        {
      	    Debug.WriteLine("②" + dt.Rows[i]["A"]);
        
        }

        //DataRowsに格納してからデータを取得する③
        DataRow[] dr = dt.Select("E = '3' ");
        for (int i  = 0;i < dr.Length; i++){
            Debug.WriteLine("③" + dr[i]["A"]);
        }

        //DataRowsに格納してからデータを取得す④

        for (int i = 0; i < dt.Rows.Count; i++)
       {
           DataRow dr2= dt.Rows[i];
            Debug.WriteLine("④" + dr2["A"]);
        }

        //DataRowsに格納してからデータを取得する⑤
        foreach(DataRow dr3 in dt.Rows){
            Debug.WriteLine("⑤" + dr3["A"]);
        }
.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }