C# LINQ 通过比较键合并字典
C# LINQ Merge Dictionaries by comparing keys
我有 2 部字典如下
Dictionary<string, string> first= new Dictionary<string, string>();
Dictionary<string, string> second = new Dictionary<string, string>();
first.Add("NAME", "NAME");
first.Add("TYPE", "TYPE");
first.Add("REF","REF");
first.Add("NUMBER", "NUMBER");
first.Add("DATE", "DATE");
first.Add("SOURCE", "SOURCE");
second.Add("TYPE", "T1");
second.Add("REF","A1234");
second.Add("NUMBER", "B456");
second.Add("DATE", "D123455");
second.Add("NAME", "NAME");
second.Add("SOURCE", "SOURCE");
如何实现如下所示的结果字典
("NAME", "NAME");
("TYPE", "T1");
("REF","A1234");
("NUMBER", "B456");
("DATE", "D123455");
("SOURCE", "SOURCE");
理想情况下,第一个和第二个合并在一起,第二个的值合并到第一个,键应该按照第一个字典的顺序保留。
谁能提出实现此目标的最佳方法,谢谢。
var result = first.Union(second)
.GroupBy(x => x.Key)
.Select(x => new { Key = x.Key, Value = x.Last().Value })
.ToDictionary(x => x.Key, x => x.Value);
首先你是两个集合的联合,然后通过键对它们进行分组选择 Last().Value
作为值并将其再次转换为 Dictionary
。
我有 2 部字典如下
Dictionary<string, string> first= new Dictionary<string, string>();
Dictionary<string, string> second = new Dictionary<string, string>();
first.Add("NAME", "NAME");
first.Add("TYPE", "TYPE");
first.Add("REF","REF");
first.Add("NUMBER", "NUMBER");
first.Add("DATE", "DATE");
first.Add("SOURCE", "SOURCE");
second.Add("TYPE", "T1");
second.Add("REF","A1234");
second.Add("NUMBER", "B456");
second.Add("DATE", "D123455");
second.Add("NAME", "NAME");
second.Add("SOURCE", "SOURCE");
如何实现如下所示的结果字典
("NAME", "NAME");
("TYPE", "T1");
("REF","A1234");
("NUMBER", "B456");
("DATE", "D123455");
("SOURCE", "SOURCE");
理想情况下,第一个和第二个合并在一起,第二个的值合并到第一个,键应该按照第一个字典的顺序保留。 谁能提出实现此目标的最佳方法,谢谢。
var result = first.Union(second)
.GroupBy(x => x.Key)
.Select(x => new { Key = x.Key, Value = x.Last().Value })
.ToDictionary(x => x.Key, x => x.Value);
首先你是两个集合的联合,然后通过键对它们进行分组选择 Last().Value
作为值并将其再次转换为 Dictionary
。