在 C# 中合并两个字典
Merge two dictionaries in C#
知道这个question's answer,加入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'>]
你像这样合并它们:
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());
您可以使用 Concat
、GroupBy
和 First
:
var result = d1.Concat(d2)
.GroupBy(kv => kv.Key)
.ToDictionary(g => g.Key, g => g.First().Value);
知道这个question's answer,加入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'>]
你像这样合并它们:
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());
您可以使用 Concat
、GroupBy
和 First
:
var result = d1.Concat(d2)
.GroupBy(kv => kv.Key)
.ToDictionary(g => g.Key, g => g.First().Value);