У меня есть 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);
}
Вы можете сделать
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);
}
Вы можете написать свой собственный метод расширения, если вы используете C # 3 +, чтобы помочь вам с этим. Этот код имел некоторое основное тестирование, чтобы гарантировать, что он работает:
public static void AddRange<T>(this ObservableCollection<T> coll, IEnumerable<T> items)
{
foreach (var item in items)
{
coll.Add(item);
}
}
Циклы единственный способ, поскольку нет эквивалента AddRange
для ObservableCollection
.