Réponses:
ObservableCollection <T> a une surcharge de constructeur qui prend IEnumerable <T>
Exemple pour une liste de int:
ObservableCollection<int> myCollection = new ObservableCollection<int>(myList);
Un autre exemple pour une liste de ObjectA:
ObservableCollection<ObjectA> myCollection = new ObservableCollection<ObjectA>(myList as List<ObjectA>);
              ObervableCollection a un constructeur dans lequel vous pouvez passer votre liste. Citant MSDN :
 public ObservableCollection(
      List<T> list
 )
              Le constructeur Observable Collection prendra un IList ou un IEnumerable.
Si vous trouvez que vous allez faire beaucoup cela, vous pouvez faire une méthode d'extension simple:
    public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> enumerable)
    {
        return new ObservableCollection<T>(enumerable);
    }