があり、値型であるとの 2 つの変数の組み合わせを検索してList<Thing> things
、多数の を頻繁に取得する必要があります。私が今やっていることは単純です。しかし、私は非常に多くの検索を頻繁に行っているため、より効果的な方法が必要です。Thing
T1 f1
T2 f2
things.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, ...];
ますか?