我有两个词典。
Dictionary<string, string> testDict = new Dictionary<string, string>();
testDict.Add("Name", "John");
testDict.Add("City", "NY");
Dictionary<string, string> DictA = new Dictionary<string, string>();
DictA.Add("Name", "Sarah");
DictA.Add("State", "ON");
我希望得到一个字典,只有DictA这样的元组才能与testDict具有相同的密钥
因此示例合并字典应如下所示:
Dictionary<string, string> DictMerged = new Dictionary<string, string>();
DictMerged.Add("Name", "Sarah");
我希望我已经能够解释我的要求..
真心感谢任何帮助
由于
答案 0 :(得分:2)
一种可能的方式:
var DictMerged = DictA.Where(o => testDict.ContainsKey(o.Key))
.ToDictionary(o => o.Key, o => o.Value);
<强> Dotnetfiddle Demo
强>
上面的代码只是在DictA
中过滤了testDict
项中的项密钥,然后将结果投影到新的字典实例中。
答案 1 :(得分:1)
您可以使用LINQ
:
var resultDict = testDict.Keys.Intersect(DictA.Keys)
.ToDictionary(t => t, t => DictA[t]);
答案 2 :(得分:0)
您可以在两个词典之间进行连接。像这样的东西(输入这里,所以可能会有点偏差):
dictA
.Join(testDict, kv => kv.Key, kv => kv.Key, (kva, kvt) => kva)
.ToDictionary(kv => kv.Key, kv => kv.Value)
这样可以在两个表之间的数据库中进行连接。第二个和第三个参数是说你想加入每个词典的Key(每个词的处理方式相同)。最后一个参数说“对于每个匹配,从DictA中选择键值项(并从testDict中丢弃一个)”,最后将弹出的KeyValuePairs序列转换回字典形式。