【发布时间】:2013-02-15 03:02:19
【问题描述】:
当我们使用 MVVM 时,我们在视图模型中使用了相当多的 ObservableCollections,为了节省一些输入,我决定有一个扩展方法将 IEnumerable 直接转换为 ObservableCollection,而不是必须创建每次都有一个新的 ObservableCollection。
因此,而不是键入...
ObservableCollection fred = new ObservableCollection(myCollection);
...我们可以输入...
ObservableCollection fred = myCollection.ToObservableCollection();
显然,在上面的人为示例中,这样做几乎没有什么好处,但在更大的 Linq 查询中,这可以清理代码。
反正我写了这样一个简单的扩展方法……
public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> collection) {
if (collection != null) {
return new ObservableCollection<T>(collection);
}
throw new ArgumentNullException("collection");
}
但是,当我尝试使用它时,我得到了一个异常......
LINQ to Entities 无法识别方法 'System.Collections.ObjectModel.ObservableCollection`1[VisionRT.CRM.Entities.SiteOverview] ToObservableCollection[SiteOverview](System.Collections.Generic.IEnumerable`1[VisionRT.CRM.Entities .SiteOverview])' 方法,并且该方法不能翻译成商店表达式。
如果不是因为 ToList() 扩展方法做了完全相同的事情,但确实有效,我会理解这一点。
任何人知道我的方法为什么失败,以及如何解决它?谢谢。
【问题讨论】:
标签: linq-to-entities extension-methods observablecollection