Нет вывода типа с 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 Вы применяете это безоговорочно.

Другие вопросы по тегам