1

这是将对象从一个列表移动到另一个列表的正确方法吗?

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);
}

它仍然是正确的方法吗?

4

2 回答 2

2

好吧,你可以简单地做:

foreach (var obj in SelectedObjects)
    ToBeProcessed.Add(obj);

SelectedObjects.ClearItems();
于 2013-10-30T07:55:44.463 回答
1

无论使用 index 还是 foreach,您都无法在遍历集合时修改它。但是,根据您的描述,这里的SelectedObjects的行为更像是一个“临时集合”,它是从另一个ToSelectObjects集合中选择的,因此您可能不需要从中删除对象,但是在将它们添加到ToBeProcessed之后,foreach 再次循环SelectedObjects并删除它们来自ToSelectObjects ...

于 2013-10-30T07:31:05.053 回答