IDataReader - ContainsColumn
An IDataReader extension method that query if '@this' contains column.
public static void Main() { string sql = "SELECT 1 AS IntColumn, 'FizzBuzz' AS StringColumn"; using (var conn = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer())) { conn.Open(); using (DbCommand command = conn.CreateCommand()) { command.CommandText = sql; using (IDataReader reader = command.ExecuteReader()) { reader.Read(); //C# Extension Method: IDataReader - ContainsColumn bool result1 = reader.ContainsColumn("IntColumn"); // return true; bool result2 = reader.ContainsColumn("ABC"); // return false; Console.WriteLine(result1); Console.WriteLine(result2); } } } }
View Source
using System; using System.Data; public static partial class Extensions { /// <summary> /// An IDataReader extension method that query if '@this' contains column. /// </summary> /// <param name="this">The @this to act on.</param> /// <param name="columnIndex">Zero-based index of the column.</param> /// <returns>true if it succeeds, false if it fails.</returns> public static bool ContainsColumn(this IDataReader @this, int columnIndex) { try { // Check if FieldCount is implemented first return @this.FieldCount > columnIndex; } catch (Exception) { try { return @this[columnIndex] != null; } catch (Exception) { return false; } } } /// <summary> /// An IDataReader extension method that query if '@this' contains column. /// </summary> /// <param name="this">The @this to act on.</param> /// <param name="columnName">Name of the column.</param> /// <returns>true if it succeeds, false if it fails.</returns> public static bool ContainsColumn(this IDataReader @this, string columnName) { try { // Check if GetOrdinal is implemented first return @this.GetOrdinal(columnName) != -1; } catch (Exception) { try { return @this[columnName] != null; } catch (Exception) { return false; } } } }