10 個のプロパティを持つクラスのコレクションを 1 つ作成するとします。このコレクションには約 1000 万のアイテムが含まれます。
ここで、このコレクションを O(1) の時間複雑度または O(1) に近いクラスのプロパティで検索したいと考えています (1 つのプロパティ、つまり ID または名前だけではありません)。
List を LINQ クエリで使用すると、O(n) 時間の複雑さが必要になるため、使用できません。
C# には、1 つのキー タイプのみでインデックスを作成できる辞書があります。なのでこちらも使えません。
1 つの解決策として、すべてのプロパティでインデックス付けされた 10 の辞書を作成できますが、この解決策には 1,000 万のアイテムがあるため、大量のメモリが必要になります。したがって、それは実現不可能です。
PS私はメモリソリューション(データベースなし)でのみ必要であり、コレクションはクラスの任意の単一のプロパティで検索できます(例:MyCollection [2]またはMyCollection ["John"]またはMyCollection ["12/12/2013"]など)検索時間は O(1) に近い必要があります。
では、この種のデータ構造をどのように実装できますか??