Plus court chemin pour vérifier la valeur null et attribuer une autre valeur si ce n'
Je suis en tirant varchar
des valeurs d'une base de données et que vous voulez définir la string
je suis en les assignant à que "" si elles sont null
. Je suis actuellement en train de faire comme ceci:
if (string.IsNullOrEmpty(planRec.approved_by) == true)
this.approved_by = "";
else
this.approved_by = planRec.approved_by.toString();
Il semble que il doit y avoir un moyen de le faire dans une seule ligne quelque chose comme:
this.approved_by = "" || planRec.approved_by.toString();
Cependant je ne peux pas trouver un meilleur moyen pour ce faire. Est-il une meilleure façon ou est-ce que j'ai la meilleure façon de le faire?
- L' == true est superflu ici...
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Vous pouvez également utiliser le null-coalescence de l'opérateur comme les autres l'ont dit - puisque personne n'a donné un exemple qui fonctionne avec votre code ici est un:
Mais cet exemple ne fonctionne que depuis une valeur possible pour
this.approved_by
est la même que l'une des valeurs possibles que vous souhaitez le configurer. Pour tous les autres cas, vous aurez besoin d'utiliser l'opérateur conditionnel comme je l'ai montré dans mon premier exemple.if (planRec.approved_by == null) { this.approved_by = planRec.approved_by.toString(); //<= nullref } else { this.approved_by = planRec.approved_by;}
. Si je me trompe s'il vous plaît signaler l'erreur.this.approved_by = planRec.approved_by?.toString() ?? "";
<- C'est le null-opérateur conditionnel, et je ne pense pas que c'était autour de quand cette question a d'abord été posées et répondues. Espérons OP voit, donc il peut aller refactoriser ses 7 ans de code, de deux emplois: il y a) .La fusionner opérateur (??) est ce que vous voulez, je crois.
Ma conjecture est le meilleur que vous pouvez venir avec est
Bien sûr, puisque vous êtes allusion au fait que
approved_by
est unobject
(qui ne peut pas égal à ""), ce serait réécrit commeVous êtes à la recherche pour le C# fusionnent opérateur: ??. Cet opérateur prend à gauche et à droite argument. Si le côté gauche de l'opérateur est null ou une nullable sans valeur, il sera de retour le bon argument. Sinon, ce sera le retour de la gauche.
Avec C#6 est légèrement plus courte pour le cas où planRec.approved_by n'est pas une chaîne de caractères:
Utiliser le C# fusionnent opérateur: ??
D'étendre @Dave répondre...si planRec.approved_by est déjà une chaîne
Pour attribuer un non-variable vide, sans répéter le nom de variable (et sans affecter n'importe quoi, si la variable est null!), vous pouvez utiliser un peu de méthode d'assistance avec un
Action
paramètre:Et puis il suffit de l'utiliser:
Vous pouvez aussi le faire dans votre requête, par exemple dans sql server, google
ISNULL
etCASE
fonctions intégrées.- Je utiliser l'extension de la méthode SelfChk
Ensuite utiliser comme