用新项替换集合中的项

时间:2017-04-13 08:52:20

标签: c# wpf collections

我有一个名为A的observablecollection,其中包含属性id,年龄,名称,Am,将更改后的内容存储在另一个集合中B.现在我想将对象A中的相同项替换为B中已更改的内容。如何才能实现它

foreach(var item in A)
{
}

3 个答案:

答案 0 :(得分:3)

您可以使用Zip运算符

        ObservableCollection<ObjType> obsCollectionA = new ObservableCollection<ObjType>();
        ObservableCollection<ObjType> obsCollectionB = new ObservableCollection<ObjType>();

        foreach (var pair in obsCollectionA.Zip(obsCollectionB, (a, b) => new { A = a, B = b }))
        {                
            pair.A.Id   =   pair.B.Id;
            pair.A.Name =   pair.B.Name;
            pair.A.Age  =   pair.B.Age;
        }

答案 1 :(得分:0)

假设“是的,我需要用相同的A”

索引替换B中的项目
for(int i = 0; i < A.Count; i++)
{
    B[i] = A[i];  //or A[i] = B[i];
    // You could compare by: if(A[i].ID == B[i].ID)
}

答案 2 :(得分:0)

您可以这样:

public static IList<T> Swap<T>(this IList<T> list, int indexA, int indexB)
{
    if (indexB > -1 && indexB < list.Count)
    {
        T tmp = list[indexA];
        list[indexA] = list[indexB];
        list[indexB] = tmp;
    }
    return list;
}
相关问题