I am pulling varchar
values out of a DB and want to set the string
I am assigning them to as "" if they are null
. I'm currently doing it like this:
if (string.IsNullOrEmpty(planRec.approved_by) == true)
this.approved_by = "";
else
this.approved_by = planRec.approved_by.toString();
There seems like there should be a way to do this in a single line something like:
this.approved_by = "" || planRec.approved_by.toString();
However I can't find an optimal way to do this. Is there a better way or is what I have the best way to do it?
Try this:
You can also use the null-coalescing operator as other have said - since no one has given an example that works with your code here is one:
But this example only works since a possible value for
this.approved_by
is the same as one of the potential values that you wish to set it to. For all other cases you will need to use the conditional operator as I showed in my first example.You can also do it in your query, for instance in sql server, google
ISNULL
andCASE
built-in functions.My guess is the best you can come up with is
Of course since you're hinting at the fact that
approved_by
is anobject
(which cannot equal ""), this would be rewritten asYou are looking for the C# coalesce operator: ??. This operator takes a left and right argument. If the left hand side of the operator is null or a nullable with no value it will return the right argument. Otherwise it will return the left.
I use extention method SelfChk
Then use like
With C#6 there is a slightly shorter way for the case where planRec.approved_by is not a string: