Frage

Ich habe gerade gelesen, die Top-Antwort auf diesen Beitrag:
Problem Einfügen String oder NULL in SQL Server-Datenbank

korrigiert mich wenn ich falsch liege, aber kann die ?? -. Betreiber nicht nur auf zwei Variablen des gleichen Typs verwendet werden, wenn nicht ich es sehr zu schätzen würde, wenn jemand mein kleines Problem lösen könnte

Ich habe versucht, unten einige Code in meinem Projekt ähnlich dem eingefügt werden soll.

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);
}

Aber Visual Studio beschwert sich mit der folgenden Meldung:
"Operator '??' kann nicht auf Operanden vom Typ ‚String‘ und ‚System.DBNull‘“

angewandt werden
War es hilfreich?

Lösung

DBNull und Null sind nicht vom gleichen Typ, noch sind Nullable Types oder Referenztypen und DBNull. Sie können nur verwenden ?? mit den Werten des gleichen Typs.

Man kann von der denken ?? Betreiber als syntaktischer Zucker für:

(left != null) ? left : right

Und die ternäre Operation erfordert sowohl links und rechts vom gleichen Typ zu sein, so also links und rechts von dem ?? Betreiber muss auch vom gleichen Typ sein.

Also, leider nein .. Sie können es auf diese Weise nicht, zumindest nicht ohne hässlichen Guss.

Andere Tipps

Versuchen:

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

Es werden nur Fehler ist, dass es das Wörterbuch nachschlagen zweimal tun!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top