2010-10-08 70 views
2

我不能使用ToList<Tresult>()擴展方法。我使用的代碼是Collection.ToList <TResult>()擴展方法引發編譯時錯誤

return this.Semesters.ToList<ISemester>() 

上述代碼中的'上學期'是一個EntityCollection。 這些使用指令已經存在,

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

我仍然不能編譯,因爲它不斷complainting是 System.Data.Objects.DataClasses.EntityCollection<Semester>不包含「ToList」和最佳推廣方法重載System.Linq.ParallelEnumerable.ToList<TSource>(System.Linq.ParallelQuery<TSource>)的定義有一些無效參數

回答

2

你確定學期實施ISemester嗎?作爲一項測試,我做到了這一點

interface ISemester { } 
class Semester : ISemester { } 

// ... 

List<Semester> Semesters = new List<Semester>(); 
var query = Semesters.ToList<ISemester>(); 

這是好的。但是,將類更改爲class Semester { },並且在語法上與您報告的表面相似。

+0

糟糕!是的,我的錯!學期實施了不同的界面。但是,這個錯誤是誤導性的。 – 2010-10-08 18:28:59

1

缺少對System.Core裝配的參考?這可能會做到這一點......

編輯:必須有東西System.Linq名稱空間,或將無法編譯。我認爲也許PFX正在做這個工作......但假設你使用.NET 4,ParallelEnumerable類是System.Core

如果您輸入Enumerable.會發生什麼 - 是否顯示任何內容?

+0

缺席該引用,你會覺得'使用System.Linq的;'將突出爲無效,不是嗎? – 2010-10-08 18:18:23

+0

@Anthony:我想知道ParallelEnumerable是否在一個不同的程序集中,但它不是 - 至少不是在.NET 4中。 – 2010-10-08 18:19:35

+0

我在我的項目引用部分有一個對System.Core的現有引用。沒有這樣的命名空間,對嗎? – 2010-10-08 18:22:12

0

是否缺少

System.Data 
System.Data.DataSetExtensions 
System.Data.Entity 
在引用

+0

如果編譯器錯誤提到'EntityCollection '那麼就沒有使用指令問題...... – 2010-10-08 18:21:25

+0

不在使用指令中,我的意思是在項目引用中。 – automagic 2010-10-08 18:53:11