按键比较两个词典以获取匹配键的值

时间:2015-06-04 22:13:10

标签: c#

我有两个词典A和B.

A - (a,b) (c,d) (e,f)
B - (a,p) (c,q) (g,h)

我希望能够制作一个新的字典C,如下所示 -

C - (b,p) (d,q)

我有什么方法可以做到这一点吗?

这就是我目前所拥有的:

var C= B.Where(d => A.ContainsKey(d.Key)).ToList();

1 个答案:

答案 0 :(得分:4)

Linq很容易;)

var query =
    from x in dictionary1
    join y in dictionary2 on x.Key equals y.Key
    select new { Value1 = x.Value, Value2 = y.Value };

var newDict = query.ToDictionary(item => item.Value1, item => item.Value2);

然而,它并不是最有效的方法,因为它没有利用字典的快速查找。更快的方法是这样的:

var newDict = new Dictionary<string, string>(); // adjust the key and value types as needed
foreach (var kvp in dictionary1)
{
    string value2;
    if (dictionary2.TryGetValue(kvp.Key, out value2))
    {
        newDict.Add(kvp.Value, value2);
    }
}