Cast LINQ result to ObservableCollection
c#, casting, linq
Solution
Just use:
ObservableCollection<Foo> x = new ObservableCollection<Foo>(enumerable);
That will do the required copying. There's no way of observing changes to the live query - although the idea of an `ObservableQuery<T>` is an interesting (though challenging) one.
If you want an extension method to do this, it's simple:
public static ObservableCollection<T> ToObservableCollection<T>
(this IEnumerable<T> source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
return new ObservableCollection<T>(source);
}
Problem
The fact that it is a LINQ result might perhaps not be relevant for the question, but I'm mentioning it anyway - since this is the context which has resulted in this question. I run a LINQ query. The result is an; ``` IEnumerable<MyClass> ``` I want to put the result into an ObservableCollection; ``` ObservableCollection<MyClass> ``` How do I do this cast? (without running through the IEnumerable and copying elements to the ObservableCollection). I notice LINQ has got a few To..() functions, but it doesn't seem to help me for this cast..?