【发布时间】:2019-12-03 20:45:47
【问题描述】:
我有两个 Dictionary<int, (int, int)> 类型的字典,第一个 int 是它们的键,(int, int) 是它们的值。
使用var intersections = dict1.Values.Intersect(dict2.Values);,我可以比较值并返回一个 IEnumerable,其中包含两者之间重合的所有值,但这并没有给我密钥。并且使用var intersections = dict1.Keys.Intersect(dict2.Keys); 将返回出现在两个字典中的键,即...每个键,因为键刚从 1 开始,每个条目递增 1,所以没用。
我想通过它们的值比较条目,然后访问它们的键。因此,例如,如果条目 (12, 36) 出现在 dict1 的 Key 20 和 dict2 的 Key 45 上,我想有一种访问 20 和 45 的方法。
我完全不知所措。我能够比较值和返回值,我能够比较键和返回键,但我无法比较值和返回键。怎么做?
谢谢!
【问题讨论】:
-
描述你试图解决的问题,而不是描述你无法实现的问题的解决方案。
-
任何值不可能在任一字典中出现多次吗?
-
Dictionary的值不保证是唯一的。那么,考虑到这两个字典可能有匹配的重复值,相交操作的预期输出是什么?例如dict1: {{1 => "A"}, {2 => "A"}}、dict2: {{11 => "A"}, {12 => "A"}}。输出应将值"A"与第一个字典的键1, 2和第二个字典的11, 12相关联。你想要Dictionary<TValue, (List<TKey>, List<TKey>)>类型的输出吗?
标签: c# linq dictionary intersect