LINQ超过数据集错误

S.A*_*hid 4 c# linq linq-to-sql

我正在尝试使用以下代码从数据集中检索数据:

    var all_pepole = from rows_of_bank in ds1.Tables[0].Rows select rows_of_bank;
    foreach (System.Data.DataRow row in all_pepole)
    {
        Console.WriteLine("{0} {1} is {2} years old.", row[0].ToString(), row[1].ToString(), row[2].ToString());
    }
Run Code Online (Sandbox Code Playgroud)

但是这个代码会给我带来错误,这是错误的:

无法找到源类型"System.Data.DataRowCollection"的查询模式的实现.找不到"选择".考虑明确指定范围变量'rows_of_bank'的类型

Tho*_*que 9

ds1.Tables[0].Rows是类型DataRowCollection,实现IEnumerable但不是IEnumerable<DataRow>.大多数Linq运算符仅适用于通用接口.您可以将项目强制转换为DataRow:

var all_pepole = from rows_of_bank in ds1.Tables[0].Rows.Cast<DataRow>() select rows_of_bank;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用AsEnumerableLinq到DataSet 的扩展方法:

var all_pepole = from rows_of_bank in ds1.Tables[0].AsEnumerable() select rows_of_bank;
Run Code Online (Sandbox Code Playgroud)