Gat*_*ler 28 .net c# datatable foreach datarow
我有什么理由不能做到以下几点:
foreach (var Item in DataTable.Rows) {
Run Code Online (Sandbox Code Playgroud)
而不是必须这样做
foreach (DataRow Item in DataTable.Rows) {
Run Code Online (Sandbox Code Playgroud)
我原以为这是可能的,就像在其他数据类型上一样.例如:
foreach (var Employee in Staff) { // string[] Staff etc...
Run Code Online (Sandbox Code Playgroud)
当我尝试第一个foreach循环时,我得到错误CS0021:无法将带有[]的索引应用于'object'类型的表达式.
为什么编译器不能确定.Rows返回DataRows的集合?
Bri*_*sen 28
Rows有效返回IEnumerable(DataRowCollection),因此编译器只能选择object类型var.Rows.Cast<DataRow>如果要使用,请使用var.
Cast在Enumerable上定义,因此您必须包含System.Linq.
Jon*_*eet 23
Brian对此有充分的理由,但有一种更简单的方法可以避免它:使用DataTableExtensions.AsEnumerable():
foreach (var row in DataTable.AsEnumerable())
{
...
}
Run Code Online (Sandbox Code Playgroud)