Проверка наличия столбца в считывателе данных [дубликат]
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.