asp.netでdbnullとnullの処理
質問
これらの(誤った)行を書き直す最良の方法は何ですか?
ブール? result = dr ["result"] == dbnull.value? null:convert.toint32(dr ["result"]);
...と...
dr ["result"] = result ?? dbnull.value;
どちらもコンパイルしません。
MySQLコネクタを使用していますが、たとえば設定させません。 dr["result"] = null;
これが私が最初に試したことです。
mysql nullableを表すためのより適切な.netデータ型はありますか tinyint(1)
?
解決
どうですか:
dr["Hello"] = (object)result ?? DBNull.Value;
bool? result = dr["result"] == DBNull.Value ? null : (bool?)(Convert.ToInt32(dr["result"]) != 0);
あなたの提案がコンパイルされない理由は、三元演算子の両方の代替案が ?:
同じタイプが必要です。 DBNull.Value
明らかにaと同じタイプではありません bool?
. 。キャスト bool?
に object
ただし、両方とも同じタイプになります。同様のルールが2行目に適用されます。
他のヒント
ストアドプロシージャまたはSQLクエリを使用している場合は、使用できます ISNULL()
nullを処理するためのSQLの関数...
所属していません StackOverflow