Extending IDataReader

I like to access my DataReader objects via column name. Unfortunately, IDataReader supports getting items via integer indexer.

To overcome this *obstacle*, I’ve written an extension method I’d like to share. It checks to see whether a column exists and has a value associated with it.

public static class IDataReaderExtension
      /// <summary>
      /// Adds the HasValue property to an IDataReader, which checks based on Column name
      /// </summary>
      /// <param name="reader">An IDataReader object</param>
      /// <param name="column">The string column name</param>
      /// <returns>boolean</returns>
      public static bool HasValue(this IDataReader reader, string column)
           if (reader.GetSchemaTable().Columns.Contains(column))
               return reader[column] != null || reader[column] != DBNull.Value;
               return false;

In order to use this method, you can now check:

    myObject.ColumnInfo = Convert.ToString(reader["MY_COLUMN"]);

Related Articles