从另一个列表中的一个列表中添加数据保存第一个列表的引用
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()));
并且没有任何问题
我有 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()));
并且没有任何问题