它是LINQ结果的事实可能与问题无关,但无论如何我都提到它 - 因为这是导致这个问题的背景.
我运行LINQ查询.结果是;
IEnumerable<MyClass>
Run Code Online (Sandbox Code Playgroud)
我想把结果放到一个ObservableCollection中;
ObservableCollection<MyClass>
Run Code Online (Sandbox Code Playgroud)
我怎么做这个演员?(没有运行IEnumerable并将元素复制到ObservableCollection).我注意到LINQ有一些To ..()函数,但它似乎没有帮助我这个演员..?
Jon*_*eet 97
只需使用:
ObservableCollection<Foo> x = new ObservableCollection<Foo>(enumerable);
Run Code Online (Sandbox Code Playgroud)
这将进行所需的复制.没有办法观察实时查询的变化 - 虽然a的想法ObservableQuery<T>是一个有趣的(虽然具有挑战性).
如果你想要一个扩展方法来做到这一点,那很简单:
public static ObservableCollection<T> ToObservableCollection<T>
(this IEnumerable<T> source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
return new ObservableCollection<T>(source);
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*kle 13
var linqResults = foos.Where(f => f.Name == "Widget");
var observable = new ObservableCollection<Foo>(linqResults);
Run Code Online (Sandbox Code Playgroud)
bru*_*nde 10
您可以使用ObservableCollection 构造函数:
ObservableCollection<MyClass> obsCol =
new ObservableCollection<MyClass>(myIEnumerable);
Run Code Online (Sandbox Code Playgroud)