Нет вывода типа с DataRowCollection
У меня есть проект, который хранит некоторые данные из SQL в DataTable
а затем наносит на карту каждый DataRow
в пользовательский экземпляр класса.
Когда я перехожу Rows
свойство (которое имеет тип DataRowCollection
), нет никакого вывода типа.
Так что это не работает:
var dt = new DataTable();
foreach(var row in dt.Rows)
{
int id = Int32.Parse(row.ItemArray[0].ToString());
// doesn't compile
}
Но это делает:
var dt = new DataTable();
foreach(DataRow row in dt.Rows)
{
int id = Int32.Parse(row.ItemArray[0].ToString());
}
Почему компилятор не может понять, какого типа row
является? Может ли var
Ключевое слово означает что-то еще в случае перечисления более DataRowCollection
? Есть ли что-то еще, кроме строк данных, которые можно перечислить в DataRowCollection
?
Вот почему вы должны быть явными?
1 ответ
Так как DataRowCollection
инвентарь IEnumerable
(с помощью InternalDataCollectionBase
) но не общий, набрал IEnumerable<T>
, Класс просто слишком стар.
Указав тип в foreach
Вы применяете это безоговорочно.