[C#] DataRow から値を取得する(タイプセーフ)。

DataRow.Field は、.NET Framework 3.5 で拡張されたメソッドである。
DataRow といえば、アクセスする際に毎回型変換を明示的に書いていたものだが、Field メソッドを死傷することで、明示的に型を指定してアクセすることができる。
また、最大の違いは NULL 許容型がサポートされたこと。これにより取得したオブジェクトの中身が NULL であった場合でも長々と NULL チェックを書かなくても良くなった。セットした後の値の扱いは今までどおり注意を払う必要があるが、従来よりもスマートな書き方ができるようになったと思う。
DataTable dt = new DataTable();
// なんかデータ取得。

foreach (DataRow dr in dt.Rows)
{    
    // 従来までの書き方。
    string sHogeOld = (string)dr["HOGE"];
    // 値型は変換できない場合は落ちる。
    int iHogeOld = (int)dr["HOGEE"];

    string sHoge = dr.Field<string>("HOGE");
    // 値型でも、NULL 許容型にしておけば、いきなり落ちることはない。
    int? iHoge = dr.Field<int>("HOGEE");
}

DataRow.Field メソッド | msdn
http://msdn.microsoft.com/ja-jp/library/system.data.datarow.field%28v=vs.90%29.aspx

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック