Преобразование наблюдаемой коллекции обратно в обычную коллекцию - PullRequest
42 голосов
/ 02 ноября 2009

Функция имеет параметр типа object. Я отладил его, чтобы посмотреть, какой тип данных отправил мне другая часть программы. База была из ObservableCollection. Как мне преобразовать это в список?

Ответы [ 6 ]

61 голосов
/ 27 октября 2010

Просто нужно добавить пространство имен using System.Linq;

и используйте метод ToList() в объекте ObservableCollection

53 голосов
/ 02 ноября 2009

В зависимости от типа объекта в ObservableCollection ... Я буду считать, что это int для этого примера:

IEnumerable<int> obsCollection = (IEnumerable<int>)GetCollection();
var list = new List<int>(obsCollection);
19 голосов
/ 02 ноября 2009

Учитывая, что ObservableCollection<T> реализует IEnumerable<T>, вы можете передать его конструктору List<T>:

List<T> myList = new List<T>(myObservableCollection);

Где T - это тип предметов в коллекции.

4 голосов
/ 02 ноября 2009

ObservableCollection реализует IList<T>, поэтому вы должны иметь возможность использовать ToList().

http://msdn.microsoft.com/en-us/library/bb342261.aspx

2 голосов
/ 02 ноября 2009

Свойство Items возвращает IList. См. http://msdn.microsoft.com/en-us/library/ms132435.aspx

0 голосов
/ 01 декабря 2010

Я думаю, что проблема в том, что ObservableCollection может быть изменен на лету, когда вы пытаетесь преобразовать его в Список или использовать как таковой, поэтому вам может понадобиться использовать своего рода сторожевой таймер, пока ObservableCollection не завершит работу

...