(追記)表題の件はWindows Phone OS 7.0向けアプリケーションでの話になります。Windows Phone OS 7.1向けのアプリケーションでは問題なく変換できます。
WPFなら下記のように、List<T>をObservableCollection<T>へ変換することが出来るらしいのですが、Windows Phoneでは出来ません。
var enumerable = new List<string>(); var observable = new ObservableCollection<string>(enumerable);
上記のコード相当を綺麗に実装する方法が思い当らなかったので、foreachでグルグルと回す実装にしてしまいました。
さすがに色んなところで同じ処理を書くのはアレだったので、拡張メソッド化してしまいましたが、根本的にこの実装はどうなんだろう。
public static class CollectionExtensions { public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> enumerableList) { if (enumerableList == null) { return null; } var observableCollection = new ObservableCollection<T>(); foreach (var item in enumerableList) observableCollection.Add(item); return observableCollection; } }
そもそもIEnumerableからObservableCollectionへ変換するなと、いうレベルの問題だったりするのでしょうか。