2010-11-18 5 views
1

私はvb.NETにオブジェクトのコレクションを持っています。各オブジェクトには2つの異なるIDがあり、ID1とID2と呼ぶことができます。二重キー付きコレクションを作成する

これらのIDのいずれかに基づいて、コレクション内の特定のオブジェクトをすばやく見つける必要があります。私はID1を持っている場合もあれば、ID2を持っている場合もあります。私は現在、ID1をキーとしてコレクションのデータ構造を使用していますが、ID2を使用してオブジェクトを見つける必要があるときには役に立ちません。

使用するデータ構造はありますか? > yourObjectと別の1つのマッピングID2 - - > yourObjectあなたが本当に高速なデータアクセスが必要な場合は

おかげ

答えて

1

は、あなたがデータ構造、1つのマッピングID1を使用して周りに取得することはできません。私はVB6の互換性のある主なCollectionクラスではなく、汎用のDictionary(Of TKey, TValue)クラスを推奨します。 2データ構造アプローチの場合、手動で同期させる必要があります。 (あなたはおそらく、すべての同期ロジックが集中した場合、このために別のクラスTwoKeyDictionaryを作成する必要があります。)一方

、パフォーマンスがない問題であるならば、あなたは任意のデータ構造(偶数リストを使用することができますかセット)と簡単にアクセスできるようにLINQを使用します。高速アクセスのみID1またはID2のいずれかのために必要とされる場合は、組み合わせたアプローチを使用することができ、もちろん

Dim lst As List<MyClass> = ... 
Dim myObject = (From entry In lst Where entry.ID1 = ...).FirstOrDefault() 

。次に、ID1に基づいて1つの辞書を作成し、ID2を使用してこの辞書を検索するためにLINQを使用することができます。

関連する問題