如何将 observablecollection 添加到另一个 observablecollection c#

How add observablecollection to another observablecollection c#

我有 ObservableCollection

ICollection<Clip> Clipcol = new ICollection<Clip>;
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol);

我有 class,我可以在这里做这样的事情

public class ClipStorageCollection : System.Collections.ObjectModel.ObservableCollection<Clip>
            {
                public ClipStorageCollection(Clip collect)
                    : base()
                {
                    this.Add(collect);
                }
            }

但我想将所有包含剪辑的 ObservableCollection coll 添加到 ClipStorageCollection。 我该怎么做?

可能我没理解你的问题,我最初的想法是实例化ClipStorageCollection,然后直接设置为coll,像这样

ClipStorageCollection myClipStorageCollection= coll;

您可以使用带有 IEnumerable.

ObservableCollection 的构造函数
public class ClipStorageCollection : System.Collections.ObjectModel.ObservableCollection<Clip>
{
    public ClipStorageCollection(IEnumerable<Clip> clips)
        : base(clips)
    {
    }
}

然后你可以像这样实例化它:

ICollection<Clip> Clipcol = new ICollection<Clip>;
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol);
ClipStorageCollection clipStorageCollection = new ClipStorageCollection(coll);

如果您不想传递 IEnumerable<Clip> 作为构造函数参数,您可以使用 AddRange 扩展方法(并添加默认构造函数):

ICollection<Clip> Clipcol = new ICollection<Clip>;
ObservableCollection<Clip> coll = new ObservableCollection<Clip>(Clipcol);
ClipStorageCollection clipStorageCollection = new ClipStorageCollection();
clipStorageCollection.AddRange(coll);

我不确定,但是您是否可以使用迭代方法:

foreach (Clip collect in coll)
{                    
    myClipStorageCollection.add(collect);
}