嗨,我有两个词典,我需要找到一种将它们结合在一起的方法。这是两种词典类型。

IDictionary<string, byte[]> dictionary1
IDictionary<IFileShareDocument, string> dictionary2


在这两个字典中,我必须创建第三个字典,如下所示

IDictionary<IFileShareDocument, byte[]> dictionary3


这两个字典的项目数完全相同,并且它们的string属性都是链接点。

我想要的是能够写点东西来做这样的事情:

dictionary1.value join with dictionary2.key
where dictionary1.key == dictionary2.value

This statement should result in dictionary3.


有什么办法可以实现我的目标,而我似乎找不到办法?

最佳答案

这是使用使用LINQ查询语法的一种方法(此方法与@KingKing的解决方案大致相同):

IDictionary<IFileShareDocument, byte[]> dictionary3 =
    (from item1 in dictionary1
     join item2 in dictionary2 on item1.Key equals item2.Value
     select new { item2.Key, item1.Value })
         .ToDictionary(x => x.Key, x => x.Value);


请注意,对于使用joinfrom的示例,上面的方法非常有用,因为它效率更高。我之所以将其包含在此处,是因为如果您像我一样(对SQL更为熟悉,它将自动将类似的内容转换为联接),那么这种糟糕的方法可能是第一个想到的方法:

IDictionary<IFileShareDocument, byte[]> dictionary3 =
    (from item1 in dictionary1
     from item2 in dictionary2
     where item1.Key == item2.Value
     select new { item2.Key, item1.Value })
         .ToDictionary(x => x.Key, x => x.Value);

10-07 23:58