MVVM を使用しているため、ビュー モデルで ObservableCollections をかなり使用しています。タイピングを節約するために、新しい ObservableCollection を作成する代わりに、IEnumerable を 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] メソッドを認識しません。 )' メソッドであり、このメソッドは store 式に変換できません。
ToList() 拡張メソッドがまったく同じことを行いますが、機能するという事実がなければ、これは理解できます。
私の方法が失敗する理由と、それを修正する方法はありますか? ありがとう。