msfanboy
msfanboy

Reputation: 5291

Cast IEnumerable<T> to ObservableCollection<T> without constructor injection the IEnumerable<T>

How can I do that?

thats a no go:

ObservableCollection obsCol = new ObservableCollection(myIEnumerable);

scenario:

var query = from c in customers
                    select new Customer()
                    {
                       Products = from p in products
                                  where p.Id = c.Id
                                  select p
};

Products is a ObservableCollection so it can not take the IEnumerable result from the select above...

How to cast?

Upvotes: 1

Views: 5046

Answers (1)

SLaks
SLaks

Reputation: 887479

Like this:

ObservableCollection obsCol = new ObservableCollection(myIEnumerable.ToList());

Note that the ObservableCollection instance will not reflect changes to the customers list.

EDIT: The Select extension method returns an instance of a compiler-generated iterator class. Since this class does not inherit ObservableCollection, it is impossible to cast it to one.

Upvotes: 2

Related Questions