1

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

public class Example {

  public Object One { get; }
  public Object Two { get; }
  public Object Three { get; }
}

另一个类包含这些对象的集合,并且经常需要枚举这些对象,我主要使用 LINQ。很多时候,虽然我只需要主要基于属性 One 的值来查找/枚举这些对象的子集,所以我想做的是将这些对象存储在基于该属性的有效数据结构中。我可以执行以下操作:

Dictionary<Object,List<Example>>

但这让我觉得效率很低,我知道我需要某种哈希表,但以前从未在 C# 中使用过,我不确定有什么用。

其他一些要求/注意事项:

  • 所有对象都是不可变的,并且具有固定的哈希码,这些哈希码是根据类在构造函数中实例化的值计算得出的
  • 必须能够在数据结构的同一个“槽”中存储多个具有相同值(以及因此哈希码)的属性 One 的项目
  • 必须能够从集合中自由添加和删除对象
4

3 回答 3

2

索引 LINQ可能可以在这里为您提供帮助。它提供了一个内存集合,但允许您将对象的属性属性为可索引,以便它可以针对它们创建有效的查询。

于 2009-05-21T08:12:44.250 回答
1

PowerCollections ( http://www.codeplex.com/PowerCollections ) 有一个 MultiDictionary 容器——也许你可以试试?

于 2009-08-12T09:27:52.733 回答
0

或混合字典

于 2009-05-21T08:57:23.690 回答