3303 Stimmen

Wie kann man über ein Wörterbuch iterieren?

Ich habe ein paar verschiedene Möglichkeiten, über ein Wörterbuch in C# zu iterieren gesehen. Gibt es eine Standardmethode?

92 Stimmen

@VikasGupta Was würden Sie vorschlagen, um etwas mit einer Sammlung von Schlüssel-Wert-Paaren zu tun, wenn Sie nicht wissen, wie die Schlüssel lauten werden?

11 Stimmen

@nasch: myDictionary.Keys erhalten Sie eine Sammlung, die die Schlüssel in myDictionary .

33 Stimmen

@displayName Wenn Sie etwas mit jedem Schlüssel-Wert-Paar machen wollen, aber keinen Verweis auf die Schlüssel haben, um die Werte nachzuschlagen, würden Sie über das Wörterbuch iterieren, richtig? Ich wollte nur darauf hinweisen, dass es Fälle geben kann, in denen man das tun möchte, obwohl Vikas behauptet, dass dies in der Regel eine falsche Verwendung ist.

5voto

yazanpro Punkte 4052

Ich werde den Vorteil von .NET 4.0+ nutzen und eine aktualisierte Antwort auf die ursprünglich akzeptierte geben:

foreach(var entry in MyDic)
{
    // do something with entry.Value or entry.Key
}

4voto

Nick Punkte 107

Die Standardmethode, um über ein Dictionary zu iterieren, ist laut der offiziellen Dokumentation auf MSDN

foreach (DictionaryEntry entry in myDictionary)
{
     //Read entry.Key and entry.Value here
}

4voto

Steven Delrue Punkte 385

Ich habe eine Erweiterung für eine Schleife über ein Wörterbuch geschrieben.

public static class DictionaryExtension
{
    public static void ForEach<T1, T2>(this Dictionary<T1, T2> dictionary, Action<T1, T2> action) {
        foreach(KeyValuePair<T1, T2> keyValue in dictionary) {
            action(keyValue.Key, keyValue.Value);
        }
    }
}

Dann können Sie

myDictionary.ForEach((x,y) => Console.WriteLine(x + " - " + y));

4voto

Wenn Sie z. B. standardmäßig über die Wertesammlung iterieren möchten, können Sie IEnumerable<> implementieren, wobei T der Typ des Werteobjekts im Wörterbuch ist und "this" ein Wörterbuch ist.

public new IEnumerator<T> GetEnumerator()
{
   return this.Values.GetEnumerator();
}

1voto

Sheo Dayal Singh Punkte 1405

Wörterbuch< TKey, TValue > Key muss eindeutig sein und kann nicht null sein, während Wert kann duplizieren und null.as jedes Element im Wörterbuch wird als KeyValuePair< TKey, TValue > Struktur, die einen Schlüssel und seinen Wert behandelt. und daher sollten wir das Element Typ KeyValuePair< TKey, TValue> während der Iteration des Elements zu nehmen. Nachstehend finden Sie ein Beispiel.

Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1,"One");
dict.Add(2,"Two");
dict.Add(3,"Three");

foreach (KeyValuePair<int, string> item in dict)
{
    Console.WriteLine("Key: {0}, Value: {1}", item.Key, item.Value);
}

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