Pages

2014/12/04

[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
Related Posts Plugin for WordPress, Blogger...