Recherche de la valeur null dans le jeu de données - Méthode DataRow.IsNull vs == DbNull.Value - c #
Quels sont les avantages de l'utilisation de la méthode c# DataRow.IsNull pour déterminer une valeur nulle au cours de la vérification si la ligne est égale à DbNull.de la valeur?
if(ds.Tables[0].Rows[0].IsNull("ROWNAME")) {do stuff}
vs
if(ds.Tables[0].Rows[0]["ROWNAME"] == DbNull.value) {do stuff}
source d'informationauteur Jarrod
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de véritable pratique avantage. Utilisation selon l'une semble plus lisible pour vous.
Quant aux différences entre eux, la base de la réponse est que
IsNull
interroge le nul de l'état pour un enregistrement particulier à l'intérieur d'une colonne. À l'aide de== DBNull.Value
fait récupère la valeur et ne la substitution dans le cas où c'est effectivement nulle. En d'autres termes,IsNull
vérifie l'état sans récupération de la valeur, et donc un peu plus rapide (en théorie, du moins).Il est théoriquement possible qu'une colonne de retourner quelque chose autres que
DBNull.Value
pour une valeur null si vous deviez utiliser un type de stockage, mais ce n'est jamais fait (dans mon expérience). Si tel était le cas,IsNull
permettrait de gérer le cas où le type de stockage utilisé autre chose queDBNull.Value
mais, encore une fois, je n'ai jamais vu cette façon de faire.DBNull.Value != null
DBNull.La valeur pour une colonne ayant la valeur
<NULL>
.Pop ouvrir une table et revenir quelques lignes, voir si une colonne dans une ligne contient les
<NULL>
(ctrl 0) de la valeur. Si vous en voyez un qui est équivalent à DBNull.Valeur.si vous définissez une valeur null ou DBNull.Valeur, alors vous voudrez utiliser
IsNull()
.Qui retourne true si la valeur est null ou DBNull.De la valeur. Considérez les points suivants:
row["myCol"] = null;
row["myCol"] = DBNull.Value
if (row["myCol"] == DBNull.Value)
//retourne vraiif (row["myCol"] == null)
//renvoie falseif (row.IsNull("myCol"))
//retourne vraiLe point est que si vous êtes juste de vérifier la valeur null ou DBNull.La valeur de l'utilisation IsNull, si vous êtes la seule vérification pour DBNull.Valeur explicitement le dire et l'utiliser.
Pour l'un, c'est moins de frappe. Autre que cela, je pense qu'ils sont équivalents.
Pour essayer de comprendre pourquoi je dis qu'ils sont équivalents.
FWIW, j'ai écrit un tas de DataRow les méthodes d'extension —
CastAsXXX()
— pour éviter d'avoir à faire avec la DB de la valeur null...ou au moins de différer un peu de B^). Voici monCastAsInt()
etCastAsIntNullable()
méthodes:L'utilisation est assez simple. Vous avez juste besoin de faire état de vos attentes.
J'ai essayé de le rendre générique, mais pas de dés, sauf si je suis prêt à corréler les valeurs Null à partir de la base de données avec la valeur par défaut pour le type (par exemple, 0 pour les types numériques), dont je ne suis pas.
Il donne la table a vérifier la valeur null dans les lignes