LINQ超过数据集错误

时间:2011-11-23 09:51:37

标签: 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());
    }

但是这些代码会给我带来错误,这就是错误:

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

的类型

1 个答案:

答案 0 :(得分: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;

或者您可以使用从Linq到DataSet的AsEnumerable扩展方法:

var all_pepole = from rows_of_bank in ds1.Tables[0].AsEnumerable() select rows_of_bank;