在非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语句之外,还有其他选择可以使这项工作吗?
答案 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