这是将对象从一个列表移动到另一个列表的正确方法吗?
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);
}
它仍然是正确的方式吗?
答案 0 :(得分:2)
嗯,你可以这样做:
foreach (var obj in SelectedObjects)
ToBeProcessed.Add(obj);
SelectedObjects.ClearItems();
答案 1 :(得分:1)
无论使用索引还是foreach,您都无法修改集合。但是,根据您的描述, SelectedObjects 此处的行为更像是“临时集合”,它是从 ToSelectObjects 的另一个集合中选择的,因此您可能不需要从中删除对象,但在将它们添加到 ToBeProcessed 之后,再次循环 SelectedObjects 并将其从 ToSelectObjects 中删除...