chugh97 chugh97 - 1 month ago 10
C# Question

Merge and Update Two Lists in C#

I have two

List<T>
objects:

For example:

List 1:

ID, Value where Id is populated and value is blank and it contains say IDs from 1 to 10.

1,""

2,""

...

10,""

List 2:

ID, Value and other attributes all filled with values but this list is a subset of List 1 in terms of IDs. (e.g only 3 items)

2,67

4,90

5,98

What I want is a merged list 1, but with updated values. Does anyone have any good extension method which will do this or any elegent code to perform this operation. The final list should be:

ID, Value

1,""

2,67 //value from list 2

3,""

4,90

5,98

6,""

...

10,""

Answer

I would probably use a dictionary rather than a list:

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

If you are talking about properties of an object, it will be trickier, but still doable.