- - PR -
LINQのジェネリックメソッドでDbNullの変換エラー
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-13 01:24
お世話になります。
VB2008でLINQを使用しています。 http://msdn.microsoft.com/ja-jp/library/bb386916.aspx を確認し
との記載があり、NULLを意識せずに下記のコードを実行したところ 「DbNullをIntegerにキャストできない」旨のエラーが発生しました。
このようなときには、やはりNullを考慮しないといけないでしょうか? | ||||||||||||
|
投稿日時: 2008-08-18 07:04
DbNull と null は、違うものです。null は意識しなくても、DbNull は意識してください。
| ||||||||||||
|
投稿日時: 2008-08-18 12:52
NAL-6295です。
久しぶりに書き込みます。
これは、確かにそうなんだけど今回の例には当てはまらないと思います。 MSDNはDataRow.IsNullメソッドでチェックすることをNull値のチェックと記述しているので、ここでいうNull値とはDbNull相当のことを指しているのではないでしょうか。 で、Null許容型を扱うことができるためと書いてありながら、VBのサンプルでNull許容型を使っていない。 それをそのまま信じてコーディングすると
となる。 このような使い方をした事が無いので、あれですがMSDNを信じるなら
としてみてはどうでしょうか。 追記: MSDNに書かれている言葉の意味ですが、 Nullを意識しなくてよいわけではなく、 DBNull.Valueとnullの違いを明示的に意識しなくても良いようにNull許容型を利用する事ができるようになりました。 という事だと思いますよ。 [ メッセージ編集済み 編集者: NAL-6295 編集日時 2008-08-18 13:19 ] | ||||||||||||
|
投稿日時: 2008-08-18 20:58
NAL-6295さんよりご提示いただいたとおりNullableジェネリック型を
使用することで対応できました。
ありがとうございました。 |
1