2 Stimmen

Inneres Wörterbuch als Wert im äußeren Wörterbuch aktualisieren

In einer solchen Konstruktion:

Dictionary<myObject, Dictionary<myEnum, secondObject>> myDict;

Ich benutze foreach um alle Einträge im äußeren Bereich zu suchen Dictionary :

foreach (var elem in myDict)
{
//I need to make some modifications in inner Dictionary for chosen myEnum
}

Wie kann man das tun?

2voto

Sergey Kalinichenko Punkte 694383

En foreach Schleife über eine Dictionary zählt die Schlüssel-Wert-Paare auf. Der Schlüssel ist in elem.Key ; der Wert (d.h. Ihr inneres Zielwörterbuch) ist elem.Value .

foreach (var elem in myDict)
{
    //I need to make some modifications in inner Dictionary for chosen myEnum
    Dictionary<myEnum, secondObject> inner = elem.Value;
    inner[myEnum.EnumVal1] = new secondObject(123);
    inner[myEnum.EnumVal2] = new secondObject(456);
}

1voto

Adam Houldsworth Punkte 61593

Sie waren nah dran, es scheint, dass Sie nur etwas Verwirrung über den Zugang zum inneren Wörterbuch haben?

foreach (var elem in myDict) // var is KeyValuePair<myObject, Dictionary<myEnum, secondObject>>
{
    var innerDict = elem.Value; // Value is Dictionary<myEnum, secondObject>

    if (innerDict != null)
    {
        if (innerDict.ContainsKey(enumVal)) // key is myEnum
        {
            var value = innerDict[enumVal]; // var is secondObject
        }
    }
}

0voto

daryal Punkte 14383

Da keine Angaben zu myObject oder secondObject gemacht werden, ist das Folgende vielleicht zu allgemein, aber es kann Ihnen zumindest eine Idee vermitteln:

foreach (var elem in myDict)
{
    var temp = elem.Value.Single(p => p.Key == MyEnum.a);
    (temp.Value as MySecondObject).anyProperty = anyValue;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X