があり、値型であるとの 2 つの変数の組み合わせを検索してList<Thing> things、多数の を頻繁に取得する必要があります。私が今やっていることは単純です。しかし、私は非常に多くの検索を頻繁に行っているため、より効果的な方法が必要です。ThingT1 f1T2 f2things.Where(t => t.Field1 == f1 && t.Field2 == f2)
幸いなことに、things要素を削除または追加する必要はありません。そのため、作成時にリストを解析してDictionary<T1, Lookup<T2, Thing>>. ただし、特に解析が追加されているため、これは面倒です。さらに多くのフィールドを検索する必要がある場合は、非常に面倒です。3 つのフィールドは のようになりますDictionary<T1, Dictionary<T2, Lookup<T3, Thing>>>。
次に考えたのは、 を作ることでしたLookup<Tuple<T1,T2,T3,...>,Thing>。ただし、この場合、Tuple は参照型であるため、キーが実際に機能するかどうかはわかりません。
. _ Lookup<ValueType<T1,T2,T3,...>,Thing> things_things[new ValueType<T1,T2,T3,...>(f1, f2, f3, ...)]
ハッシュテーブルのパフォーマンス上の利点を維持し、単に次のようなものを入力できる、よりエレガントなソリューションはありIEnumerable<Thing> found = things[f1, f2, f3, ...];ますか?