将对象从一个集合带到另一个集合
本文关键字:集合 一个 另一个 对象 | 更新日期: 2023-09-27 18:37:21
这是将对象从一个列表移动到另一个列表的正确方法吗?
private ObservableCollection<SomeObject> toBeProcessed =
new ObservableCollection<SomeObject>();
public ObservableCollection<SomeObject> ToBeProcessed
{
get
{
return toBeProcessed ;
}
set
{
//implements INotifyProperyChanged:
SetField(ref toBeProcessed , value, "ToBeProcessed");
}
}
public void MoveSelected(ObservableCollection<SomeOject> SelectedObjects)
{
foreach (var obj in SelectedObjects)
{
ToBeProcessed.Add(obj);
SelectedObjects.Remove(obj);
}
}
这是正确的方法吗?如果是,有没有更好的方法?
更新,抱歉认为它无法在 foreach 循环中完成,因此请将其更改为此
for (int i = SelectedObjects.Count - 1; i >= 0; i--)
{
ToBeProcessed.Add(SelectedObjects[i]);
SelectedObjects.RemoveAt(i);
}
这仍然是正确的方式吗?
好吧,你可以简单地做:
foreach (var obj in SelectedObjects)
ToBeProcessed.Add(obj);
SelectedObjects.ClearItems();
在浏览集合时,无论使用 index 还是 foreach,您都无法修改该集合。但是,从您的描述来看,这里的 SelectedObjects 的行为更像是一个"临时集合",它是从另一个 ToSelectObjects 集合中选择的,因此您可能不需要从中删除对象,但是将它们添加到 ToBeProcessed 后,foreach 再次循环 SelectedObjects 并从 ToSelectObjects 中删除它们......