我需要使用新列表的数据更新现有列表。如下图所示:
我有一个列表A绑定到我的UI元素。我需要使用列表B的项目更新列表A的项目数据,而不用列表B分配列表A.如下所示:
List A:
{
{id: 1, value: AAA},
{id: 2, value: DDD},
{id: 3, value: CCC},
{id: 4, value: BBB}
}
List B:
{
{id: 1, value: ZZZ},
{id: 5, value: XXX},
{id: 3, value: YYY},
{id: 4, value: BBB}
}
Finally after updation we should have value in List A as below:
List A:
{
{id: 1, value: ZZZ},
{id: 5, value: XXX},
{id: 3, value: YYY},
{id: 4, value: BBB}
}
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
您可以为第二个列表执行Clear()
然后AddRange()
。
ListA.Clear();
ListA.AddRange(ListB);
答案 1 :(得分:0)
这应该这样做:
A.RemoveAll(aItem => B.All(bItem => aItem.id != bItem.id));
A.ForEach((aItem) => { aItem.value = B.First(bItem => aItem.id == bItem.id).value; });
A.AddRange(B.Where(bItem => A.All(aItem => aItem.id != bItem.id)));
第1行删除不常见的项目。第2行更新两个列表之间的公共项。第3行添加了B个独特的项目。