Добавьте элементы от IList до ObservableCollection

У меня есть ObservableCollection, и я хотел бы установить содержание IList этому. Теперь я мог просто создать новый экземпляр набора..:

public ObservableCollection<Bar> obs = new ObservableCollection<Bar>(); 
public void Foo(IList<Bar> list)
{
    obs = new ObservableCollection<Bar>(list); 
}

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

public void Foo(IList<Bar> list)
{
   foreach (var elm in list)
       obs.Add(elm); 
}
22
задан stiank81 2 February 2010 в 13:02
поделиться

3 ответа

Вы можете сделать

public void Foo(IList<Bar> list)
{
    list.ToList().ForEach(obs.Add);
}

или как Метод расширения,

    public static void AddRange<T>(this ObservableCollection<T> collection, IEnumerable<T> items)
    {
        items.ToList().ForEach(collection.Add);
    }    
53
ответ дан 29 November 2019 в 03:46
поделиться

Вы можете написать свой собственный метод расширения, если вы используете C # 3 +, чтобы помочь вам с этим. Этот код имел некоторое основное тестирование, чтобы гарантировать, что он работает:

public static void AddRange<T>(this ObservableCollection<T> coll, IEnumerable<T> items)
{
    foreach (var item in items)
    {
        coll.Add(item);
    }
}
9
ответ дан 29 November 2019 в 03:46
поделиться

Циклы единственный способ, поскольку нет эквивалента AddRange для ObservableCollection .

1
ответ дан 29 November 2019 в 03:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: