时有一个原因,我不能做到以下几点:

foreach (var Item in DataTable.Rows) {

,而不必做

foreach (DataRow Item in DataTable.Rows) {

我会认为这是可能的,就像它是在其它数据类型。例如:

foreach (var Employee in Staff) { // string[] Staff etc...

当我尝试第一foreach循环时,得到了错误的 CS0021:无法应用用[]索引到类型“对象”的表达

为什么不能编译数字指出.Rows返回数据行的一个集合?

有帮助吗?

解决方案

Rows有效返回IEnumerableDataRowCollection),因此编译器只能挑选object作为var类型。使用Rows.Cast<DataRow>如果你想使用var

Cast被限定在可枚举,所以你必须包括系统.Linq。

其他提示

布赖恩是绝对正确的关于这种情况的原因,但有避免它的一个简单的方法:使用的 DataTableExtensions.AsEnumerable()

foreach (var row in DataTable.AsEnumerable())
{
    ...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top