Проверка наличия столбца в считывателе данных [дубликат]

This question already has an answer here:

Check for column name in a SqlDataReader object 22 answers

Есть ли способ узнать, существует ли поле в объекте, основанном на IDataReader, без проверки только исключения IndexOutOfRangeException?

По сути, у меня есть метод, который принимает объект на основе IDataReader и создает строго типизированный список записей. В одном случае у одного считывателя данных есть поле, которого нет у других. Я действительно не хочу переписывать все запросы, которые подают в этот метод, чтобы включить некоторую форму этого поля, если мне это не нужно. Единственный способ, которым я смог выяснить, как это сделать, - это бросить 1 уникальное поле в блок try / catch, как показано ниже.

try
{
    tmp.OptionalField = reader["optionalfield"].ToString();
}
catch (IndexOutOfRangeException ex)
{
    //do nothing
}

Есть ли более чистый способ добавить «необязательное поле»? на другие запросы или копирование метода загрузки, чтобы одна версия использовала необязательное поле, а другая - нет?

Я тоже в рамках 2.0.

Ответы на вопрос(7)

Ваш ответ на вопрос