将对象从一个集合转移到另一个集合

时间:2013-10-30 06:47:21

标签: c#

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

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

它仍然是正确的方式吗?

2 个答案:

答案 0 :(得分:2)

嗯,你可以这样做:

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

SelectedObjects.ClearItems();

答案 1 :(得分:1)

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