Aag*_*nor 9 c# collections silverlight
我有两个ObservableCollection列表,我想团结起来.我天真的做法是使用联盟 - 方法:
ObservableCollection<Point> unitedPoints = observableCollection1.Union(observableCollection2);
Run Code Online (Sandbox Code Playgroud)
ObservableCollection1/2也是ObservableCollection类型.但是编译器会为此行抛出以下错误:
类型"System.Collections.Generic.IEnumerable"无法隐式转换为"System.Collections.ObjectModel.ObservableCollection".已经存在明显的转换.(可能缺少转换)
(措辞可能不准确,因为我从德语翻译).
谁知道,如何合并ObservableCollections并获得一个ObservableCollection作为结果?
先谢谢你,弗兰克
Edith说:我刚刚意识到,重要的是要提到我开发了Silverlight-3-Application,因为"ObservableCollection"类在SL3和.NET3.0场景中有所不同.
Ant*_*nes 12
LINQ Union扩展方法返回IEnumerable.您需要枚举并将每个项目添加到结果集合中: -
var unitedPoints = new ObservableCollection<Point> ();
foreach (var p in observableCollection1.Union(observableCollection2))
unitedPoints.Add(p);
Run Code Online (Sandbox Code Playgroud)
如果您想要ToObservableCollection,那么您可以:
public static class MyEnumerable
{
public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> source)
{
var result = new ObservableCollection<T> ();
foreach (var item in source)
result.Add(item);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
现在您的行是:
var unitedPoints = observableCollection1.Union(observableCollection2).ToObservableCollection();
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
您想合并现有内容,但基本上有独立列表吗?如果是这样,这相对容易:
ObservableCollection<Point> unitedPoints = new ObservableCollection<Point>
(observableCollection1.Union(observableCollection2).ToList());
Run Code Online (Sandbox Code Playgroud)
但是,如果你想要一个可观察的集合,它实际上是对其他人的"观察",我不确定这样做的最佳方式......
| 归档时间: |
|
| 查看次数: |
17826 次 |
| 最近记录: |