2016-07-26 5 views
0

IWie für den Zugriff auf Wert mit bekannten Schlüsseln aus einem verschachtelten Wörterbuch

Dim north_dict As New Dictionary(Of String, Dictionary(Of String, String)) 

Innerhalb eines ein Wörterbuch erstellen I For Each-Schleife

Dim dict_north As New Dictionary(Of String, String) 

eine verschachtelte Wörterbuch für jeden Schlüssel in north_dict erstellen

Jedes verschachtelte Wörterbuch hat die gleichen 35 Schlüssel Beispielschlüssel y7x1, y7x2 ...

Ohne das Wörterbuch durchzublättern, wie kann ich Werte bekannter Schlüssel aus den verschachtelten Wörterbüchern abrufen?

Dim north_files() As String = Directory.GetFiles(txtbx_north_location.Text) 

For Each file As String In north_files 

    Dim dict_north As New Dictionary(Of String, String) 

    Dim reader_for_files As New StreamReader(file) 
    Dim allLines As List(Of String) = New List(Of String) 

    Do While Not reader_for_files.EndOfStream 
     allLines.Add(reader_for_files.ReadLine()) 
    Loop 

    reader_for_files.Close() 

    y7x1 = ReadLine(2, allLines) 
    dict_north.Add("y7x1", y7x1) 
    y7x2 = ReadLine(4, allLines) 
    dict_north.Add("y7x2", y7x2) 

    Dim result As String 
    result = Path.GetFileName(file) 
    north_dict.Add(result, dict_north) 

Weiter

so dass

Dim sbuild As New StringBuilder 
For Each item As KeyValuePair(Of String, Dictionary(Of String, String)) In north_dict 
    sbuild.AppendLine(item.Key & ") " & item.Value.ToString) 
Next 
MessageBox.Show(sbuild.ToString) 

produziert Ergebnisse wie

NORTH_COL_10ROW_1) System.Collections.Generic.Dictionary'2 [System.String, System.String] NORTH_COL_10ROW_10) System.Collections.Generic.Dictionary'2 [System.String, System.String]

Ich möchte den Wert von zum Beispiel Schlüssel y7x1 von NORTH_COL_4ROW_2 bekommen

Ich weiß noch nicht, ob die verschachtelten Wörterbücher erfolgreich hinzugefügt werden.

+0

So etwas wie 'sbuild .AppendLine (item.Key & ")" & item.Value ("y7x1")) '? – Mark

+0

Danke Mark Ich lerne gerade. – Nasuno

+0

Das zeigt mir, dass meine Wörterbücher funktionieren. Jetzt muss ich herausfinden, wie ich sie außerhalb der Schleife einzeln erreichen kann. – Nasuno

Antwort

0

Ich habe Arbeits

Dim dictvalue As String = "" 
If north_dict("NORTH_COL_4ROW_2").TryGetValue("y7x1", dictvalue) Then 
    MessageBox.Show(dictvalue.ToString) 
End If 
0

Haben Sie über die Verwendung von linq nachgedacht? es wäre etw. so was. Hier ist ein funktionierendes Beispiel, immer noch nicht sicher, ob ich Ihre Frage richtig verstanden habe.

 For n = 1 To 100 

      Dim dict_north As New Dictionary(Of String, String) 

      For m = 1 To 35 
       dict_north.Add("y7x" & m.ToString(), "Value for y7x " & m.ToString()) 
      Next 

      north_dict.Add(n.ToString(), dict_north) 

     Next 

     Dim s = (From nd In north_dict 
       From dn In nd.Value 
       Where dn.Key = "y7x2" 
       Select nd.Key & " - " & dn.Value).ToList() 

     Debug.Print(String.Join(" ,", s.ToArray())) 

Ergebnis ist 1 - Wert für y7x 2, 2 - Wert für y7x 2, 3 - Wert für y7x 2 ...

Verwandte Themen