39

Tell me please is this is correct way to check NULL in DataRow if need to return a string

 Convert.ToString(row["Int64_id"] ?? "")

Or should be like check with DBNull.Value.

Need to so much more smaller than

if(row["Int64_id"] != DBNull.Value){...}else if{}
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
AleksP
  • 1,244
  • 2
  • 12
  • 18
  • 1
    row["ColumnName"] != DBNull.Value, also you can try things like this by yourself. One way is to use debuger ! – mybirthname Dec 10 '14 at 10:05

2 Answers2

83

Check if the data column is not null with DataRow.IsNull(string columnName)

if (!row.IsNull("Int64_id"))
{
  // here you can use it safety
   long someValue = (long)row["Int64_id"];
}

There are overloads for it using the index of the column or if you have the instance of the DataColumn. If you are sure about the index, use the index version which tends to be faster than the other options.

Felipe Oriani
  • 37,948
  • 19
  • 131
  • 194
22

We have created an extension class that helps in these kinds of situations.

public static class DataRowExtensions
  {
    public static T FieldOrDefault<T>(this DataRow row, string columnName)
    {
      return row.IsNull(columnName) ? default(T) : row.Field<T>(columnName);
    }
  }

You can use is as follows:

int id = dataRow.FieldOrDefault<int>("Id");
Ajit Goel
  • 4,180
  • 7
  • 59
  • 107