从字典中获取冲突列表

时间:2018-07-10 00:05:59

标签: c#

给一个字典,是否可以提取其键具有所需哈希码的条目的集合?因此输出应为List<keyValuePair>

字典中的每个项目都有一个GetHashCode()方法,该方法特意允许发生冲突。它仅设计用于项目的name

它们的Equals()函数可解决这些冲突。它检查namequantity成员变量

inb4:存储列表字典对我来说不是一个选择

编辑:它需要比O(n)复杂度更快,最终就像直接访问存储桶并从中复制一个

1 个答案:

答案 0 :(得分:1)

是的,您可以使用LINQ来过滤字典:

var list = dictionary.Where( pair => pair.Value.GetHashCode() == hashCode );

这将给您IEnumerable<KeyValuePair<T>>。您当然可以使用ToDictionary将其转换回字典:

var dict = dictionary
    .Where( pair => pair.Value.GetHashCode() == hashCode );
    .ToDictionary( pair => pair.Key, pair => pair.Value );