次のようなデータ構造が推奨されます。私は3つの主要な特性を持つクラスを持っています。c#の列挙のためのデータ構造格納されるオブジェクトの1つのプロパティで検索されることが多い
public class Example {
public Object One { get; }
public Object Two { get; }
public Object Three { get; }
}
別のクラスは、これらのオブジェクトのコレクションが含まれており、頻繁に私はLINQを主に行うたこれらの上に列挙する必要があります。主にプロパティoneの値に基づいてこれらのオブジェクトのサブセットのみをルックアップ/列挙する必要がありますが、私はそのプロパティに基づいて効率的なデータ構造にこれらを格納します。私は私がそこにあるものがわからないよ、私はハッシュテーブルのいくつかの種類を必要と知っているが、C#での前に1を使用したことがないた、
Dictionary<Object,List<Example>>
しかし、これは非常に非効率的であるとして私を打つ:私は次のような何かを行うことができますつかいます。
いくつかの他の要件/ノート:
- すべてのオブジェクトは不変であり、クラスがコンストラクタにしてインスタンス化されます値から計算されているハッシュコード
- は、複数の項目を格納することができる必要がありますを修正しましたすなわち、
- が自由コレクションからオブジェクトを追加および削除することができなければならないデータ構造内の同じ「スロット」にプロパティの一つで同じ値(従って、ハッシュコード)を有する
私はハッシュテーブルクラスを使いました。より多くのベンチマークを行っていて、マイナーなロードパフォーマンスの損失を犠牲にして、これが大幅なルックアップのパフォーマンス向上をもたらすことがわかりました – RobV