這個問題是鑄造的「LINQ與Data.DataTableCollection鑄造」連續的問題,這裏是鏈接[問題] LINQ casting with a Data.DataTableCollection @Lasse Espeholt爲什麼LINQ與Data.DataTableCollection
我情況相同的情況。我想對集合DataTableCollection執行LINQ查詢。但是,如果我寫下如下代碼:
from dataTable in dataSet.Tables
在Visual Studio將報告錯誤「找不到源類型‘System.Data.DataTableCollection’的查詢模式的實現」。所以解決方法是將代碼更改爲以下內容:
因此,我從互聯網挖掘根本原因。我發現了一些線索:「典型的LINQ to Objects查詢表達式不僅需要實現IEnumerable作爲其數據源的類,還會返回相同類型的實例。」在this page。所以我不知道DataTableCollection不會繼承接口IEnumerable。但根據我在MSDN檢查,我發現DataTableCollection中的的傳承關係如下:
DataTableCollection
InternalDataCollectionBase
ICollection
IEnumerable
所以這個的傳承關係,意味着只有DataTableCollection中繼承IEnumerable接口,不繼承IEnumerable接口。所以它不能支持LINQ查詢。並且解決方案是使用cast方法將其轉換爲IEnumerable,然後可以執行LINQ查詢。
因此,作爲想要啓用LINQ功能對象的類的摘要,它必須繼承IEnumerable接口和IEnumerable接口。
我的摘要正確嗎? IEnumerable和IEnumerable有什麼區別?
你的意思了IEnumerable和IEnumerable之間的差異? –
是的,@Rahul。我不知道IEnumerable和IEnumerable之間沒有任何區別,除了泛型接口。 –
newcarcrazy