我想要执行交叉的几个字典。 两个词典可能具有相同键的不同值列表。
示例:
Dictionary<int, List<int>> Primary = new Dictionary<int, List<int>>();
Primary.Add(1, new List<int>());
Primary[1].Add(5);
Primary[1].Add(6);
Primary[1].Add(7);
Primary.Add(2, new List<int>());
Primary[2].Add(5);
Dictionary<int, List<int>> Secondary = new Dictionary<int, List<int>>();
Secondary.Add(1, new List<int>());
Secondary[1].Add(6);
Secondary[1].Add(7);
Secondary[1].Add(8);
Secondary.Add(3, new List<int>());
Secondary[3].Add(5);
所以我希望结果字典只包含:
[1],[表&LT; 6,7&GT;]
我怎样才能做到这一点?我希望交集的实际数据结构是以下形式:
Dictionary<long, SortedList<int,List<long>>>
答案 0 :(得分:2)
您可以按如下方式实现:
var result = Primary.Keys.Intersect(Secondary.Keys)
.ToDictionary(key => key,
key => Primary[key].Intersect(Secondary[key]).ToList());
将结果转换为Dictionary<long, SortedList<int,List<long>>>
应该很容易。