Reputation: 7533
What is the best way of rewriting these (erroneous) lines?
bool? result = dr["result"] == DBNull.Value ? null : Convert.ToInt32(dr["result"]);
...and...
dr["result"] = result ?? DBNull.Value;
Both do not compile.
I am using the MySql connector and it doesn't let me set, for example, dr["result"] = null;
which is what I first tried.
Is there an more suitable .NET data type for representing a MySql nullable tinyint(1)
?
Upvotes: 1
Views: 2046
Reputation: 4431
If you are using a stored procedure or SQL queries then you can use ISNULL()
function of SQL to handle NULL...
Upvotes: -1
Reputation: 6086
How about:
dr["Hello"] = (object)result ?? DBNull.Value;
bool? result = dr["result"] == DBNull.Value ? null : (bool?)(Convert.ToInt32(dr["result"]) != 0);
The reason your suggestion does not compile is that both alternatives of the ternary operator ?:
must have the same type. DBNull.Value
obviously is not the same type as a bool?
. Casting the bool?
to an object
however makes them both the same type. Similar rules apply on the second row.
Upvotes: 2