【问题标题】:Replace the item in collection with a new item [closed]用新项目替换集合中的项目[关闭]
【发布时间】:2017-04-13 08:52:20
【问题描述】:

我有一个名为 A 的 observablecollection,其属性为 id、age、name,我将更改的内容存储在另一个集合 B 中。现在我想用 B 中更改的内容替换对象 A 中的相同项目。我该如何实现它。

foreach(var item in A)
{
}

【问题讨论】:

  • 两个集合属性是否相同?
  • 是的,我需要将B中的项目替换为A的相同索引

标签: c# wpf collections


【解决方案1】:

您可以使用 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;
        }

【讨论】:

    【解决方案2】:

    假设从“是的,我需要用 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)
    }
    

    【讨论】:

      【解决方案3】:

      你可以这样:

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

      【讨论】:

        猜你喜欢
        • 2015-01-17
        • 1970-01-01
        • 2019-10-06
        • 2019-09-20
        • 1970-01-01
        • 2016-02-20
        • 2016-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多