質問


私はこの記事では、トップの答えを読みます 問題のSQL Serverデータベースに文字列またはNULLを挿入します

私が間違っている場合は、

私を修正しますが、??することができます - オペレータだけではなく、誰もが私の小さな問題を解決することができれば、私は、それを大幅に感謝し、同じタイプの2つの変数でない場合は使用する

私は次のような私のプロジェクトでは、いくつかのコードを挿入しようとします。

Dictionary<string, string> strings = new Dictionary<string, string>()
{
    {"@param0", strParam0},
    {"@param1", strParam1},
    {"@param2", strParam2}
};
foreach (string param in strings.Keys)
{
    cmd.Parameters.AddWithValue(param, strings[param] ?? DBNull.Value);
}

しかし、Visual Studioは、次のメッセージを表示して文句を言います。
「オペレータ 『??』タイプ「文字列」と「System.DBNull」」

のオペランドに適用することはできません
役に立ちましたか?

解決

はDBNullとヌルは、同じタイプではない、またnull許容型または参照型とがDBNullです。あなただけを使用できますか?同じタイプの値を持つ。

一つは、考えることができます?以下のためのシンタックスシュガーとしてオペレータます:

(left != null) ? left : right

三元動作したがって、左右の、左と同じタイプのものにする権利の両方を必要とします?また、オペレータは、同じタイプである必要があります。

だから、残念ながら、ない..あなたは、少なくともではないいくつかの醜い鋳造せずに、それをこのように行うことはできません。

他のヒント

試します:

cmd.Parameters.AddWithValue(param, (object)strings[param] ?? DBNull.Value);
    cmd.Parameters.AddWithValue(param, strings[param] == null ? DBNull.Value : strings[param]);

唯一の欠点は、それが辞書が二回まで見えるかということです!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top