2017-09-13 2 views
0

Ich habe ein Wörterbuch, das eine zufällige Anzahl von Variablen enthält (differiert auf dem Dokument in Abhängigkeit es Scannen) im folgende FormatGrouping Werte in einem Wörterbuch

  • , A, 500
  • , ORD, 50000
  • , ORD, 200

ich brauche alle Werte zu Gruppe in der Lage, zusammen zu sein, die zu derselben Klasse gehören (ORD ein Wesen und eine andere zu sein) die ganzen Zahlen zusammen und fügen Sie dann so, dass ich ausgeben kann

A - 500

ORD - 50200

Also ich denke, ich verschiedene Integer-Variablen zuweisen müssen auf die Menge der Klassen abhängig und sie dann zusammen hinzufügen, aber ich weiß wirklich nicht, wie etwa gehen es

EDIT Code einzufügen:

Dim sharenum As Int32 = 0 
Dim tempshold As String = "" 
    For Each sHolder In shareholders 
     tempshold = Replace(sHolder.numberShares, ",", "") 
     sharenum = Convert.ToInt32(tempshold) 
     dicClassShares.Add("," & Trim(sHolder.shareClass) & ",", sharenum) 
+0

Code anzeigen, in dem Sie Ihr Wörterbuch initialisieren. Sind "ORD" und "A" die Schlüssel des Wörterbuchs? – Fabio

+0

Sorry, als Bearbeitung hinzugefügt –

+2

Ich frage mich, warum Sie nicht erhalten einen Fehler "Schlüssel bereits existiert", wenn Sie ', ORD' als Schlüssel zum Wörterbuch hinzufügen. – muffi

Antwort

0

Ihr Wörterbuch Struktur eine Dictionary(Of String, List(Of Int32)) ändern

Dann schauen Sie sich für den Schlüssel und entweder hinzufügen oder den Wörterbucheintrag auf das Vorhandensein des Schlüssels abhängig bearbeiten:

Dim dicClassShares As Dictionary(Of String, List(Of Int32)) = New Dictionary(Of String, List(Of Int32)) 

If Not dicClassShares.ContainsKey Then 
    dicClassShares.Add("," & Trim(sHolder.shareClass) & ",", New List(Of Int32)) 
End If 
dicClassShares("," & Trim(sHolder.shareClass) & ",").Add(sharenum) 

Und schließlich erhalten die summierte Wert Sie wollen ...

Dim summedValues As Dictionary(Of String, Int32) = 
    dicClassShares.ToDictionary(Of String, Int32)(
     Function(k) k.Key, 
     Function(v) v.Value.Sum 
    ) 

That Das letzte bisschen ist von der Spitze meines Kopfes. Spielen Sie damit herum, wenn Sie Fehler bekommen.

+0

Vielen Dank, genau was ich brauchte –

Verwandte Themen