Sprawdzanie, czy kolumna istnieje w czytniku danych [duplikat]

To pytanie ma już tutaj odpowiedź:

Sprawdź nazwę kolumny w obiekcie SqlDataReader 22 odpowiedzi

Czy istnieje sposób sprawdzenia, czy istnieje pole w obiekcie opartym na IDataReader bez sprawdzania po prostu wyjątku IndexOutOfRangeException?

W istocie mam metodę, która pobiera obiekt oparty na IDataReader i tworzy mocno wpisaną listę rekordów. W 1 przypadku jeden czytnik danych ma pole, którego inni nie mają. Naprawdę nie chcę przepisywać wszystkich zapytań, które przekazują tę metodę, aby dołączyć jakąś formę tego pola, jeśli nie muszę. Jedynym sposobem, w jaki udało mi się dowiedzieć, jak to zrobić, jest rzucenie 1 unikalnego pola do bloku try / catch, jak pokazano poniżej.

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

Czy istnieje krótszy sposób na dodanie „opcjonalnego pola” do innych zapytań lub skopiowanie metody ładowania, aby 1 wersja korzystała z opcjonalnego pola, a druga nie?

Jestem także w ramach 2.0.

questionAnswers(7)

yourAnswerToTheQuestion