Я также сталкиваюсь с такой проблемой, но моя, я использую DbDataReader в качестве универсального читателя (для SQL, Oracle, OleDb и т. Д.) Если используется DataTable, DataTable имеет этот метод:
DataTable dt = new DataTable();
dt.Rows[0].Table.Columns.Contains("SampleColumn");
используя это, я могу определить, существует ли этот столбец в наборе результатов, который есть в моем запросе. Я также смотрю, если DbDataReader имеет эту возможность.