为什么我不能做的foreach(在DataTable.Rows VAR项目)?
题
时有一个原因,我不能做到以下几点:
foreach (var Item in DataTable.Rows) {
,而不必做
foreach (DataRow Item in DataTable.Rows) {
我会认为这是可能的,就像它是在其它数据类型。例如:
foreach (var Employee in Staff) { // string[] Staff etc...
当我尝试第一foreach循环时,得到了错误的 CS0021:无法应用用[]索引到类型“对象”的表达强>
为什么不能编译数字指出.Rows返回数据行的一个集合?
解决方案
Rows
有效返回IEnumerable
(DataRowCollection
),因此编译器只能挑选object
作为var
类型。使用Rows.Cast<DataRow>
如果你想使用var
。
Cast
被限定在可枚举,所以你必须包括系统.Linq。
其他提示
布赖恩是绝对正确的关于这种情况的原因,但有避免它的一个简单的方法:使用的 DataTableExtensions.AsEnumerable():
foreach (var row in DataTable.AsEnumerable())
{
...
}
不隶属于 StackOverflow