2010-07-18 2 views
1

Как это сделать?Cast IEnumerable <T> to ObservableCollection <T> без впрыска конструктора IEnumerable <T>

не то будет не идти:

ObservableCollection obsCol = новый ObservableCollection (myIEnumerable);

сценарий:

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

Products является ObservableCollection, поэтому он не может принять IEnumerable результат из вышеизложенного выберите ...

Как бросить?

ответ

2

Как это:

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

Обратите внимание, что экземпляр ObservableCollection не будет отражать изменения в customers списке.

EDIT: Метод выбора выбора возвращает экземпляр класса итератора, сгенерированного компилятором. Так как этот класс не наследует ObservableCollection, невозможно отнести его к одному.

+0

, пожалуйста, прочитайте о моей инструкции «нет», а затем отредактируйте свой ответ, спасибо. – msfanboy

+0

@msfanboy: Это по определению совершенно невозможно сделать это каким-либо другим способом. Пожалуйста, прочитайте о литье и занятиях, а затем отредактируйте свой вопрос, спасибо. – SLaks

+0

Метод расширения 'Select' возвращает экземпляр класса итератора, сгенерированного компилятором. Так как этот класс не наследует 'ObservableCollection', невозможно отнести его к одному. – SLaks