给一个字典,是否可以提取其键具有所需哈希码的条目的集合?因此输出应为List<keyValuePair>
。
字典中的每个项目都有一个GetHashCode()
方法,该方法特意允许发生冲突。它仅设计用于项目的name
。
它们的Equals()
函数可解决这些冲突。它检查name
和quantity
成员变量
inb4:存储列表字典对我来说不是一个选择
编辑:它需要比O(n)复杂度更快,最终就像直接访问存储桶并从中复制一个
答案 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 );