C# 中枚举的数据结构,其中查找通常基于所存储对象的一个属性
-
23-08-2019 - |
题
我想知道人们会推荐什么数据结构来执行以下操作。我有一个类,它具有三个主要属性,例如。
public class Example {
public Object One { get; }
public Object Two { get; }
public Object Three { get; }
}
另一个类包含这些对象的集合,并且经常需要枚举这些对象,而我主要使用 LINQ 来枚举这些对象。虽然很多时候我只需要主要基于属性 One 的值来查找/枚举这些对象的子集,所以我想做的是将它们存储在基于该属性的高效数据结构中。我可以做如下的事情:
Dictionary<Object,List<Example>>
但这让我觉得效率非常低,我知道我需要某种哈希表,但以前从未在 C# 中使用过哈希表,我不确定要使用什么。
其他一些要求/注释:
- 所有对象都是不可变的,并且具有固定的哈希码,这些哈希码是根据类在构造函数中实例化的值计算得出的
- 必须能够在数据结构中的同一“槽”中存储属性一具有相同值(以及哈希码)的多个项目
- 必须能够自由地从集合中添加和删除对象
解决方案
电源集合(http://www.codeplex.com/PowerCollections)有一个 MultiDictionary 容器 - 也许你可以尝试一下?
其他提示
索引 LINQ 也许可以在这里帮助你。它提供了一个内存中集合,但允许您将对象的属性属性设置为可索引,以便它可以针对它们创建有效的查询。
或混合字典
不隶属于 StackOverflow