2017-04-13 78 views
-1

我有一个可观察集合名称A带有属性id,年龄,名称,我将更改的项目存储在另一个集合B中。现在我想用对象A中的相同项目替换在B中改变了事情。我该如何实现它。用一个新项目替换集合中的项目

foreach(var item in A) 
{ 
} 
+0

这两个集合属性是否相同? –

+0

是的,我需要用B的相同索引替换B中的项 –

回答

0

从“是的,我需要的相同的指数来替代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) 
} 
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; 
} 
2

您可以使用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; 
     } 
相关问题