获取两个词典的常用键和常用值

时间:2012-05-14 15:50:52

标签: c# dictionary lambda linq-to-entities

您好我有两个下一个字典:

SortedDictionary<string, ClusterPatternCommonMetadata> PatternMetaData { get; set; }

ClusterPatternCommonMetadata对象如下所示:

int ChunkQuantity { get; set; }

SortedDictionary<int, int> ChunkOccurrences { get; set; }

首先,我需要找到两个词典中存在的PatternMetaData键的方法。我找到了这个方式:

List<string> commonKeysString=
            vector.PatternMetaData.Keys.Intersect(currentFindingVector.PatternMetaData.Keys)

然后我需要找到已创建密钥的常用值...

是否有快速方式(lambda,linq等)才能进行此类操作

由于

2 个答案:

答案 0 :(得分:11)

这叫做十字路口。

您可以使用

获取密钥
var data = dictionary1.Keys.Intersect(dictionary2.Keys)

如果要查找两个字典中包含的相等键和值,则只需

var equalDictionarys = dictionary1.Intersect(dictionary2);

答案 1 :(得分:1)

您还可以获取具有共同键的整个词典项目:

var commonDictionaryItems = Dic1.Where(d => Dic2.ContainsKey(d.Key)).ToList();