2011-03-08 32 views
4

同じIDを持つ複数のレコードをフェッチして、C#のHashtableに保存します。私はHashtableのIDとしてIDを使用しています。値はオブジェクト自体です。同じキーが再度追加されるため、例外がスローされます。この問題を解決する方法はありますか?Hastable in C#:同じキーを複数回使用する

これは私のコードです:あなたは同じキーで行くために多くのものを持っている場合は、事前 で

Hashtable localItemsIndex = new Hashtable();    
foreach (TzThing thing in localThingz) 
     localItemsIndex.Add(thing.Id, thing); 

おかげジェニー

+2

古い非ジェネリックコレクションを使用する*か、.NET 2以降のソリューションを提案してもらえますか? LINQはどうですか? –

答えて

6

たぶん、あなたは一意である必要があります一つのキー

public void Add(YourIdType key,TzThing thing) 
{ 
    if(dictionary.ContainsKey(key)) 
    { 
     dictionary[key].Add(thing); 
    } 
    else 
    { 
     dictionary.Add(key,new List<TzThing> {thing}); 
    } 
} 
+0

同じ鍵の辞書に保存する方法を教えてください。 – user642378

+0

私の編集の回答を見る – Stecya

0

は、リストにあなたの事を置きます。

1

ハッシュテーブルのキーに複数の値を格納するのにDictionary<Id,List<TzThing>>を使用する必要があります:あなたはそれに二度同じキーを追加することはできません。 ListまたはHashSetを使用することができます。ここでTはクラスのキーと値のペアです(または.net KeyValuePairクラスを使用します)。またはDictionaryクラスです。ここでVはリストまたはセットですが、手動で複製キーの挿入を管理する必要があります。

0

このためにHashTableを使用することはできません。固有のキーのみを受け入れます。それ以外の場合はList<T>KeyValuePair<key,value>クラスを使用する必要があります。

関連する問題