簡體   English   中英

聯盟兩個ObservableCollection列表

[英]Union two ObservableCollection Lists

我有兩個ObservableCollection列表,我想團結起來。 我天真的做法是使用聯盟 - 方法:

ObservableCollection<Point> 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<Point> ();
foreach (var p in observableCollection1.Union(observableCollection2))
   unitedPoints.Add(p);

如果您想要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;
    }
 }

現在您的行是:

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

您想合並現有內容,但基本上有獨立列表嗎? 如果是這樣,這相對容易:

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

但是,如果你想要一個可觀察的集合,它實際上是對其他人的“觀察”,我不確定這樣做的最佳方式......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM