This is a follow-up question to .Net C# String.Join how to output “null” instead of empty string if element value is null? where the answer suggested to use the ??
operator to define a custom null value, but the replacement never got triggered.
DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
DataTable rotationData = myDataSet.Tables["Table"];
rotationValues = string.Join(", ",
from r in rotationData.Rows.OfType<DataRow>()
select r[5] ?? "null");
When I change the code to:
rotationValues = string.Join(", ",
from r in rotationData.Rows.OfType<DataRow>()
select r[5].GetType());
I can observe that the data type for elements that have valid data in them is System.Double
whereas the data type for elements which are NULL is System.DBNull
. Does ??
not operate on System.DBNull
?
No DBNull
and null
is not the same thing.
But you can write this instead:
select r[5] == DBNull.Value ? "null" : r[5]);
Another possibility is to use Field
extension method, it will give you strongly-typed access to each of the column values in the specified row, and the ??
operator will work.
select r.Field<string>(5) ?? "null";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With