【发布时间】:2019-09-11 09:24:51
【问题描述】:
我有 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
【问题讨论】:
-
克隆列表:list2 = new ObservableCollection
(list1.Select(x => x.Clone())); -
感谢@jdweng 它与克隆一起使用
标签: c# list reference observablecollection