2011-10-07 69 views
2

我想使用SilverlightPhoneDatabase來爲我的Windows Phone 7應用程序使用sqlite數據庫。無法訪問表上的.ToList()方法

的DLL有一類數據庫類表

public class Database 
    { 
    . 
    . 
    . 
    public Table<T> Table<T>(); 
    . 
    . 
    } 

定義如下:

public class Table<T> : ObservableCollection<T>, ITable 

然後在我的App.xaml 我有一個方法

public static Database MyDB 
{ 
get 
{ 
// Delay creation of the view model until necessary 
if (database == null) 
OpenDatabase<MyObj>("MyObj"); 
return database; 
} 
} 

現在從我的xaml.cs文件中,我可以訪問Table上的.ToList()方法。 即如果我說

​​

從我main.xaml.cs

,我可以訪問ToList()方法(表類從繼承的ObservableCollection ..)

但我在創建一個新的類一個新的CS在相同的命名空間..如果我嘗試訪問Table類的ToList()方法,我得到編譯器錯誤,表<>不包含'ToList'的定義

我只是好奇爲什麼它不起作用?這可能是我很想念的東西。

回答

12

ToListIEnumerable<T>上的擴展方法:System.Linq.Enumerable.ToList因此您需要爲System.Linq名稱空間添加使用以便能夠使用它。

編譯器基本上是重寫

App.MyDB.Table<MyObj>().ToList(); 

System.Linq.Enumerable.ToList(App.MyDB.Table<MyObj>()); 
+0

有趣的..謝謝..我會盡量今晚,讓你知道.. – franklins

+0

是的,這確實是...這是奇怪..當我右鍵點擊沒有解決的建議.. – franklins

+0

AFAIK你需要ReSharper有'使用'你需要添加一個擴展方法的作品,Visual Studio不提供這些建議。 –