DataRowCollection没有类型推断

时间:2013-11-16 22:24:06

标签: c# datatable type-inference datarow datarowcollection

我有一个项目,它将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

中进行枚举

这就是你需要明确的原因吗?

1 个答案:

答案 0 :(得分:4)

由于DataRowCollection实施IEnumerable(通过InternalDataCollectionBase),但不是通用的IEnumerable<T>。这堂课太老了。

通过指定foreach中的类型来暗示它。