Entwickler-Ecke
Basistechnologien - Iteration über Dictionary
kernst-web - Fr 15.01.21 14:22
Titel: Iteration über Dictionary
Hallo,
ich habe folgenden Code Abschnitt:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| Dictionary<string, Modul> modulList = modulInfo.getModulList();
foreach (Dictionary<string, Modul> modul in modulList) {
} |
Ich hätte jetzt erwartet das man über das
Dictionary mit
foreach iterieren kann!
Bekomme aber immer folgenden Fehler:
Zitat: |
Der Typ "System.Collections.Generic.KeyValuePair<string, WindowsFormsApp1.Tools.ValueObjects.Modul>" kann nicht in "System.Collections.Generic.Dictionary<string, WindowsFormsApp1.Tools.ValueObjects.Modul>" konvertiert werden. |
Was mache ich da falsch?
Geht das gar nicht?
Bzw. wie macht man es richtig?
Danke für eure Hilfe!
Grüße
Klaus
Moderiert von Th69: Topic aus C# - Die Sprache verschoben am Fr 15.01.2021 um 14:06
Moderiert von Th69: C#-Tags hinzugefügt
Moderiert von Th69: Quote-Tags hinzugefügt
Th69 - Fr 15.01.21 15:16
Hallo und :welcome:
der Datentyp bei einer
foreach-Schleife entspricht einem Eintrag des zu iterierenden Containers.
Bei einem
Dictionary<K, V> also ein
KeyValuePair<K, V> (wie auch in der Fehlermeldung angegeben):
C#-Quelltext
1: 2: 3: 4:
| foreach (KeyValuePair<string, Modul> keyValuePair in modulList) { } |
Wenn du jedoch nur die Keys oder nur die Values benötigst, dann kannst du auch über
modulList.Keys bzw.
modulList.Values iterieren.
kernst-web - Fr 15.01.21 15:22
Danke für die Hilfe!
Manchmal sieht man den Wald vor lauter Bäumen nicht.
In meinem Fall reicht es über die
Keys zu iterieren und nachträglich das
Object aus dem
Dictionary zu nehmen.
Herzlichen Dank
Klaus
Moderiert von Th69: C#-Tags hinzugefügt
Th69 - Fr 15.01.21 15:40
Das ist dann aber ineffizienter als die KeyValuePair<K, V>-Lösung (da ja dann jedesmal nach einem Value im Dictionary gesucht wird - auch wenn diese approximiert O(1) beträgt).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!