将对象从一个集合带到另一个集合

本文关键字:集合 一个 另一个 对象 | 更新日期: 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 中删除它们......