1

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)?

2 Answers 2

2

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.

Sign up to request clarification or add additional context in comments.

Comments

-1

If you are using a stored procedure or SQL queries then you can use ISNULL() function of SQL to handle NULL...

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.