如何在Silverlight中使用LINQ创建ObservableCollection

时间:2010-04-22 15:38:00

标签: linq silverlight

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

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

Items = new System.Collections.ObjectModel.ObservableCollection<ViewModel>(list);

在Silverlight中不起作用。

除了诉诸for-each语句之外,还有其他选择可以使这项工作吗?

2 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:1)

那么如果你使用的是Silverlight 4,那就有用了。 试试这个:

public static class CollectionExtensions
    {
        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;
        }
    }

发现于:http://forums.silverlight.net/forums/p/39487/262505.aspx