我有一个项目,它将SQL中的一些数据存储在DataTable
中,然后将每个DataRow
映射到一个自定义类实例。
当我循环 over 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
?
这就是你需要明确的原因吗?
答案 0 :(得分:4)
由于DataRowCollection
实施IEnumerable
(通过InternalDataCollectionBase
),但不是通用的IEnumerable<T>
。这堂课太老了。
通过指定foreach
中的类型来暗示它。