2010年10月12日 星期二

IEnumerable介面問題---Linq相關


這是一個當我在把Linq實際應用在案子時所遇到的問題,錯誤訊息如下:
The non-generic type 'System.Collections.IEnumerable' cannot be used with type arguments

當我的Compile跟我抱怨的時候,我壓根不曉得這到底出了什麼樣的問題...
在使用Linq時我知道一定要引用System.Linq和System.Collections這兩命名空間
出問題的程式碼如下:
IEnumerable TURL = from c in root.Elements("TargetURL") select c;

其實問題就出在命名空間引用錯誤...使用Linq時除了System.Linq之外,另一個一定要引用的命名空間其實是System.Collections.Gereric,而這個命名空間就是Linq的核心。
Linq實質上就是引用了IEnumerable型別物件方法,對資料進行搜尋與維護。

而IEnumerable其實是IEnumerable介面的泛型版本,之所以說是因為很剛好的System.Collections也有IEnumerable介面...只是他是處理非泛型的集合。

MSDN是這樣說得公開能逐一查看非泛型集合內容一次的列舉值。


回到我的程式,就是因為引用的命名空間錯誤,所以才造成我Compile出現錯誤,其實這個錯誤可以用google查得到,另外一位苦主

下次在使用到Linq的時候要多注意命名空間不要引用錯誤。