Wie fügt Doppelte Einträge zur Hashtable in C#
Ich bin eine xml ...es gibt einige doppelte Einträge in dass wie diejenigen hinzuzufügen, die in der Hashtabelle
<hashdata>
<data key="A" value="A1"/>
<data key="B" value="B1"/>
<data key="C" value="C1"/>
<data key="D" value="D1"/>
<data key="E" value="E1"/>
<data key="F" value="F1"/>
<data key="A" value="A2"/>
<data key="D" value="D2"/>
<data key="F" value="F2"/>
</hashdata>
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"test.xml");
XmlNodeList xnode = xmldoc.SelectNodes("/hashdata/data");
Hashtable hst = new Hashtable();
for (int iCount = 0; iCount < xnode.Count; iCount++)
{
hst[xnode[iCount].Attributes["key"].Value.ToString()] = xnode[iCount].Attributes["value"].Value.ToString();
}
Wie man dieses Problem lösen
- Speichern Sie den Wert als eine Sammlung.
- Herzlich willkommen auf Stackoverflow, Lesen Sie bitte faq und stellen
- Bitte nicht hinzufügen, code in den Kommentaren. Bearbeiten Sie Ihre Frage statt. Bitte Lesen Sie tinyurl.com/so-list
- aber seine überschreiben der Werte
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist by-design - jede Taste in einer
Hashtable
ist einzigartig, und der Zuweisung eines Wertes zu einem Schlüssel, der bereits existiert, überschreibt dieser Wert bei der Verwendung der Indizierung Betreiber[]
.Ich würde vorschlagen, ein paar änderungen:
Ersten, vermeiden Sie die Verwendung
Hashtable
insgesamt, wenn möglich, und verwenden Sie stattdessen eine der generischen Sammlungen z.B.Dictionary<,>
.Wenn Sie tun in der Tat müssen mehrere Werte pro Schlüssel, können Sie wahrscheinlich etwas entlang der folgenden Zeilen:
Oder Linq zu konstruieren, das Wörterbuch, das Sie verwenden können, so etwas wie:
Wenn du unbedingt nutzen
Hashtable
dann die oben erwähnt sind, können wie folgt angepasst:object
verwenden vonTryGetValue
etc.)Können Sie nicht , Hashtable Schlüssel eindeutig ist.
msdn
Try-Liste etc.