[C#] DataRow から値を取得する(タイプセーフ)。
DataRow.Field は、.NET Framework 3.5 で拡張されたメソッドである。
DataRow といえば、アクセスする際に毎回型変換を明示的に書いていたものだが、Field メソッドを死傷することで、明示的に型を指定してアクセすることができる。
また、最大の違いは NULL 許容型がサポートされたこと。これにより取得したオブジェクトの中身が NULL であった場合でも長々と NULL チェックを書かなくても良くなった。セットした後の値の扱いは今までどおり注意を払う必要があるが、従来よりもスマートな書き方ができるようになったと思う。
DataRow.Field メソッド | msdn
http://msdn.microsoft.com/ja-jp/library/system.data.datarow.field%28v=vs.90%29.aspx
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