30

I can check for a DBnull on a data row using any of the methods.

Either by using

if(dr[0][0]==DBNull.Value)
//do somethin

or by doing

if(dr[0][0].ToString().IsNullOrEmpty())
//do something

In Both Cases I will be getting same result.

But Which one is conecptually right approach. Which was will use less resources

3
  • .ToString().IsNullOrEmpty()? Does a data row have 2 indices, dr[0][0]? And what if dr[0][0] is null, you can't call .ToString(). It is usually best to provide working code to get better answers. Commented Aug 3, 2010 at 6:10
  • @Kobi: My mistake you are right I meant to say DataTable if taking two indexers Commented Aug 3, 2010 at 6:15
  • for the second case, if the value in that column is null you'll be getting an error Commented Aug 3, 2010 at 6:21

4 Answers 4

28

The first way is somewhat correct. However, more accepted way is:

if ( dr[0][0] is DBNull )

And the second way is definitely incorrect. If you use the second way, you will get true in two cases:

  1. Your value is DBNull
  2. Your value is an empty string
Sign up to request clarification or add additional context in comments.

Comments

10

Conceptually the comparison to DBNull.Value is the correct one.

You can also use :

if (Convert.IsDBNull(dr[0]))
{
}

You could also use, which I'm not a fan of, purely because it's a type comparison rather than a value comparison:

if (dr[0] is DBNull)
{
}

Comments

1

Is always use :

dr[0].IsNull(0) 

Assuming that the creators of this function know the best way/most efficient way of comparing..

Comments

0

The simplest way

if (dr[0][0] == DBNull.Value)
//do somethin

is perfectly valid and readable.

Even though == compares references, it works here because DBNUll.Value is the only instance of DBNull class - so all DBNull values are actually this exact reference.

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.