嗨,我有两个词典,我需要找到一种将它们结合在一起的方法。这是两种词典类型。
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);
请注意,对于使用join
和from
的示例,上面的方法非常有用,因为它效率更高。我之所以将其包含在此处,是因为如果您像我一样(对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);