2011-10-07 68 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不提供这些建议。 –