如何在Silverlight中使用LINQ创建ObservableCollection

Son*_*ate 3 linq silverlight

在非Silverlight世界中,很容易使用LINQ来创建ObservableCollection.这是因为ObservableCollection类具有接受任何IEnumerable <T>或List <T>的构造函数.但是,Silverlight版本没有!这意味着代码如:

var list = (from item in e.Result
            select new ViewModel(item)).ToList();

Items = new System.Collections.ObjectModel.ObservableCollection<ViewModel>(list);
Run Code Online (Sandbox Code Playgroud)

不适用于Silverlight.

除了诉诸于每个声明之外,还有其他选择可以完成这项工作吗?

ale*_*bog 5

我不这么认为,但你可以使用这种扩展方法使它更清洁.

 public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> coll) {
        var c = new ObservableCollection<T>();
        foreach (var e in coll)
            c.Add(e);
        return c;
    }
Run Code Online (Sandbox Code Playgroud)