派生我發現,這是不可能直接使用LINQ超過IEnumerable<T>
即System.Data.DataRowCollection
爲什麼不能在DataRowCollection使用LINQ如果其基類自IEnumerable <T>
這來自類別System.Data.InternalDataCollectionBase
它實現IEnumerable<T>
派生一個實例,所以它可以通過使用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,我發現
標準查詢操作符允許查詢被應用到任何基於可枚舉信息源。
我知道原因應該是非常簡單的事情,但我不知道它是什麼。所以我在這裏:
爲什麼LINQ對於System.Data.DataRowCollection
實例不允許?
[編輯]:已經有一個如何克服這一點,但不是到爲什麼一個答案,所以這是我的目的,這一點:明白了,不克服。
沒有答案,但_dt.AsEnumerable()FirstOrDefault()_將允許您使用LINQ上。 DataTable – Steve
它不是'IEnumerable'。它只是'System.Collections.IEnumerable'。 –
根據您的編輯,您也在尋找*爲什麼不能使用LINQ *請檢查@EdPlunkett評論以瞭解爲什麼您不能使用LINQ。只是因爲它不是'IEnumerable',我已經在我的回答中提到了。 –