我想知道人们会推荐什么数据结构来执行以下操作。我有一个类,它具有三个主要属性,例如。

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 也许可以在这里帮助你。它提供了一个内存中集合,但允许您将对象的属性属性设置为可索引,以便它可以针对它们创建有效的查询。

或混合字典

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top