Объединить два словаря в C # - PullRequest
0 голосов
/ 23 ноября 2018

Зная ответ на вопрос , как можно объединить 2 (только) словаря (.Net 4.5)?

Дубликаты не допускаются, побеждает первый (см. Пример ниже).

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        var d1 = new Dictionary<int, string>();
        var d2 = new Dictionary<int, string>();
        // combine both, keep first duplicate only 
        var result = d1.XXX?(d2); 

    }
}

скажем

[<1,'a'>, <2, 'b'>] + [<3,'c'>, <1, 'x'>] => [<1,'a'>, <2, 'b'>, <3,'c'>]

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Вы можете использовать Concat, GroupBy и First:

var result = d1.Concat(d2)
               .GroupBy(kv => kv.Key)
               .ToDictionary(g => g.Key, g => g.First().Value);
0 голосов
/ 23 ноября 2018

Вы объединяете их так:

var d1 = new Dictionary<int, string>() { [1] = "one" };
var d2 = new Dictionary<int, string>() { [1] = "un", [2] = "deux" };

var merged = d1.Concat(d2)
    .ToLookup(x => x.Key, x => x.Value)
    .ToDictionary(x => x.Key, g => g.First());
...