При возврате данных из DataReader я обычно использовал бы порядковый номер ссылки DataReader для захвата соответствующего столбца:
if (dr.HasRows)
Console.WriteLine(dr[0].ToString());
или
if (dr.HasRows)
Console.WriteLine(dr.GetString(0));
или
if (dr.HasRows)
Console.WriteLine((string)dr[0]);
Я всегда делал это, потому что на ранней стадии мне советовали, что использование dr["ColumnName"] или более элегантный способ индексирования приводит к поражению производительности.
Однако, хотя все ссылки на сущности данных становятся все более строго типизированными, я чувствую себя более неудобно с этим. Я также знаю, что выше не проверяется DBNull.
Какой самый надежный способ вернуть данные из DataReader?