Add elements from IList to ObservableCollection
You could write your own extension method if you are using C#3+ to help you with that. This code has had some basic testing to ensure that it works:
public static void AddRange<T>(this ObservableCollection<T> coll, IEnumerable<T> items)
{
foreach (var item in items)
{
coll.Add(item);
}
}
But how can I actually take the content of the IList and add it to my existing ObservableCollection? Do I have to loop over all elements, or is there a better way?
While there may be some "better" way which would involve using third party dependencies, some low level manipulation, etc. Simply looping over the collection is fine and works. I recommend doing that. In short—no, there is, effectively, no "better" way.
This is the old version of this answer, which is a misuse of LINQ (potentially iterating the collection twice just to save a line or two of code). I wanted to delete the answer entirely, but I can't, since it's the accepted answer.
You could do
public void Foo(IList<Bar> list) =>
list.ToList().ForEach(obs.Add);
or as an extension method,
public static void AddRange<T>(
this ObservableCollection<T> collection, IEnumerable<T> items) =>
items.ToList().ForEach(collection.Add);
Looping is the only way, since there is no AddRange
equivalent for ObservableCollection
.