我发现无法在IEnumerable<T>
的实例上直接使用LINQ,即System.Data.DataRowCollection
此类派生自实现System.Data.InternalDataCollectionBase
的类IEnumerable<T>
,因此能够在System.Data.DataRowCollection
上使用LINQ函数完全有意义....但我不能。
检查以下示例:
using (DBConnection connExport = DBConnection.OpenConnection())
{
DataTable dt = GetDataTableFromDatabase();
DataRow dr1 = dt.Rows.First(); // This LINQ is not allowed
foreach(DataRow dr in dt.Rows) // But enumerating it works fine
{
// Some processing...
}
}
我搜索了official docs of LINQ我找到的地方
标准查询运算符允许将查询应用于任何基于Enumerable的信息源。
我知道原因应该是非常简单的,但我无法弄清楚它是什么。所以我走了:
为什么不允许System.Data.DataRowCollection
的实例使用LINQ?
[编辑] :已经有一个答案如何克服这一点,但不是为什么,所以这是我的目的:理解,而不是克服。