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
andnull
is not the same thing. But you can write this instead: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.??
operates on the programming languagenull
, not on the databaseDBNull
.From MSDN: