在C#中合并和更新两个列表

chu*_*h97 6 .net c# linq list generic-list

我有两个List<T>对象:

例如:

清单1:
ID,填充了Id的值,值为空,它包含1到10的说法ID.1
,""
2,""
......
10,""

列表2:
ID,值和其他属性都填充了值,但此列表在ID方面是列表1的子集.(例如只有3项)
2,67
4,90
5,98

我想要的是合并列表1,但具有更新的值.有没有人有任何好的扩展方法可以执行此操作或执行此操作的任何elegent代码.最终的清单应该是:

ID,值
1,""
2,67 //值列表2
3,""
4,90
5,98
6,""
......
10,""

小智 9

使用linq:list1 = list2.Union(list1);


Mar*_*ell 3

我可能会使用字典而不是列表:

    // sample data
    var original = new Dictionary<int, int?>();
    for (int i = 1; i <= 10; i++)
    {
        original.Add(i, null);
    }
    var updated = new Dictionary<int, int>();
    updated.Add(2, 67);
    updated.Add(4, 90);
    updated.Add(5, 98);
    updated.Add(11, 20); // add

    // merge
    foreach (var pair in updated)
    {
        original[pair.Key] = pair.Value;
    }

    // show results
    foreach (var pair in original.OrderBy(x => x.Key))
    {
        Console.WriteLine(pair.Key + ": " + pair.Value);
    }
Run Code Online (Sandbox Code Playgroud)

如果你谈论的是一个对象的属性,这会更棘手,但仍然可行。