通过添加新项目,更新现有项目以及在最少迭代中删除不常见项目来更新列表

时间:2015-07-08 11:21:52

标签: c# .net wpf linq list

我需要使用新列表的数据更新现有列表。如下图所示:

我有一个列表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}
}

实现这一目标的最佳方法是什么?

2 个答案:

答案 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个独特的项目。