1

これらの (誤った) 行を書き直す最良の方法は何ですか?

ブール?結果 = dr["結果"] == DBNull.Value ? null : Convert.ToInt32(dr["result"]);

...と...

dr["結果"] = 結果?? DBNull.Value;

どちらもコンパイルされません。

dr["result"] = null;私は MySql コネクタを使用していますが、たとえば、最初に試したものを設定できません。

MySql nullable を表すためのより適切な .NET データ型はありtinyint(1)ますか?

4

2 に答える 2

2

どうですか:

     dr["Hello"] = (object)result ?? DBNull.Value;
     bool? result = dr["result"] == DBNull.Value ? null : (bool?)(Convert.ToInt32(dr["result"]) != 0);

あなたの提案がコンパイルされない理由は、三項演算子の両方の選択肢が?:同じ型でなければならないからです。DBNull.Value明らかに a と同じ型ではありませんbool?bool?ただし、を an にキャストすると、object両方が同じ型になります。同様の規則が 2 行目に適用されます。

于 2011-09-10T17:48:00.750 に答える
-1

ストアド プロシージャまたは SQL クエリを使用している場合はISNULL()、SQL の関数を使用して NULL を処理できます...

于 2011-09-10T17:50:05.540 に答える