从另一个列表中的一个列表中添加数据保存第一个列表的引用

Adding data in one list from another list saves reference of first list

我有 2 个 observablecollection 类型列表,其中一个列表已经包含数据,在第二个列表中我正在添加第一个列表中的数据。但是当我在第二个列表中打乱数据时,它也会在第一个列表中打乱数据。

首先我尝试使用foreach循环手动添加数据

foreach(var dat in list1){        
    list2.add(new model(){
    name=dat.name
    });
} 

然后用这个方法复制数据。

list2 = new ObservableCollection<Model>(list1);

但对我来说没什么用

这是我目前正在使用的代码

list1 and 2 are property of 
ObservableCollection<Model> type

list2 = new ObservableCollection<Model>(list1);

打乱 list2 中的数据

var templist = list2.Select(c => c).ToList();
templist.Shuffler();
        int j = 0;
        for (int i = 0; i < 5; i++)
        {
            list2[i].name = templist[j].name;
            list2[i].Id = i + 1;
            j++;
        }

在此代码之后,list1 中的数据也被打乱。

我想要的是,每当我随机播放数据时,它都不应该影响我的主列表中的数据,即 list1

感谢@jdweng 让我知道 Clone

为了使其正常工作,我需要在我的模型中实现 ICloneable 接口。

这是 ICloneable 实现的好例子 https://www.c-sharpcorner.com/UploadFile/dacca2/important-interface-in-net-work-with-icloneable-interface/

那我用过

 list2 = new ObservableCollection<Model>(list1.Select(c=>(Model)c.Clone()));

并且没有任何问题