Question

Je viens de lire la réponse absolue à ce poste:
chaîne d'insérer ou problème NULL dans la base de données SQL Server

Corrigez-moi si je me trompe, mais peut-il ?? -. Opérateur non seulement être utilisé sur deux variables du même type, sinon je serais très heureux, si quelqu'un pouvait résoudre mon problème mineur

J'ai essayé d'insérer un code dans mon projet similaire à celui ci-dessous.

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

Mais Visual Studio avec le message se plaint suivant:
« « ?? » opérateur ne peut pas être appliquée à des opérandes de type « string » et « System.DBNull » »

Était-ce utile?

La solution

DBNull et nul ne sont pas le même type, ni les types nullable ou types de référence et DBNull. Vous ne pouvez utiliser ?? avec des valeurs de même type.

On peut penser à la ?? opérateur sucre syntaxique pour:

(left != null) ? left : right

Et l'opération ternaire exige à la fois gauche et droit d'être du même type, donc par conséquent à gauche et à droite de la ?? l'opérateur doit également être du même type.

Alors, malheureusement, pas .. vous ne pouvez pas le faire de cette façon, du moins pas sans une coulée laid.

Autres conseils

Essayez:

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

défaut est seulement qu'il fera le dictionnaire regarder deux fois!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top