私は、人々が次のことを行うためにどのデータ構造を推奨するのか疑問に思っています。私は3つの主要なプロパティを持つクラスを持っています.
public class Example {
public Object One { get; }
public Object Two { get; }
public Object Three { get; }
}
別のクラスにはこれらのオブジェクトのコレクションが含まれており、頻繁にこれらを列挙する必要がありますが、これは主に LINQ で行います。多くの場合、主にプロパティ One の値に基づいてこれらのオブジェクトのサブセットのみを検索/列挙する必要があるため、そのプロパティに基づいて効率的なデータ構造にこれらを格納したいと考えています。次のようなことができます。
Dictionary<Object,List<Example>>
しかし、これは非常に非効率的だと思います。ある種のハッシュテーブルが必要であることは知っていますが、C# でこれまで使用したことがないため、何を使用すればよいかわかりません。
その他の要件/メモ:
- すべてのオブジェクトは不変であり、クラスがコンストラクターでインスタンス化される値から計算される固定ハッシュ コードを持っています。
- データ構造の同じ「スロット」にプロパティ One の同じ値 (およびハッシュ コード) を持つ複数のアイテムを格納できる必要があります。
- コレクションからオブジェクトを自由に追加および削除できる必要があります