联盟两个ObservableCollection列表

我有两个ObservableCollection列表,我想团结起来。 我天真的做法是使用联盟 – 方法:

ObservableCollection unitedPoints = observableCollection1.Union(observableCollection2); 

ObservableCollection1 / 2也是ObservableCollection类型。 但编译器会为此行抛出以下错误:

类型“System.Collections.Generic.IEnumerable”无法隐式转换为“System.Collections.ObjectModel.ObservableCollection”。 已经存在明显的转换。 (可能缺少转换)

(措辞可能不准确,因为我从德语翻译)。

谁知道,如何合并ObservableCollections并获得一个ObservableCollection作为结果?

谢谢,弗兰克

Edith说:我刚才意识到,重要的是要提到我开发了Silverlight-3-Application,因为“ObservableCollection”类在SL3和.NET3.0场景中有所不同。

LINQ Union扩展方法返回IEnumerable。 您需要枚举并将每个项目添加到结果集合中: –

 var unitedPoints = new ObservableCollection (); foreach (var p in observableCollection1.Union(observableCollection2)) unitedPoints.Add(p); 

如果您想要ToObservableCollection,那么您可以:

 public static class MyEnumerable { public static ObservableCollection ToObservableCollection(this IEnumerable source) { var result = new ObservableCollection (); foreach (var item in source) result.Add(item); return result; } } 

现在您的行是:

 var unitedPoints = observableCollection1.Union(observableCollection2).ToObservableCollection(); 

您想合并现有内容,但基本上有独立列表吗? 如果是这样,这相对容易:

 ObservableCollection unitedPoints = new ObservableCollection (observableCollection1.Union(observableCollection2).ToList()); 

但是,如果你想要一个可观察的集合,它实际上是对其他人的“观察”,我不确定这样做的最好方法……