Was ist die effizienteste Methode, um die Werteliste eines Wörterbuchs in ein Array umzuwandeln?
Wenn ich zum Beispiel ein Dictionary
Wo Key
ist String
und Value
ist Foo
, möchte ich bekommenFoo[]
Ich verwende VS 2005, C # 2.0
// dict is Dictionary<string, Foo>
Foo[] foos = new Foo[dict.Count];
dict.Values.CopyTo(foos, 0);
// or in C# 3.0:
var foos = dict.Values.ToArray();
using System.Linq;
Speichern Sie es in einer Liste. Es ist leichter;
Natürlich, wenn Sie es speziell in einem Array wollen;
quelle
Es gibt eine ToArray () - Funktion für Werte:
Aber ich denke nicht, dass es effizient ist (ich habe es nicht wirklich versucht, aber ich denke, es kopiert alle diese Werte in das Array). Benötigen Sie wirklich ein Array? Wenn nicht, würde ich versuchen, IEnumerable zu übergeben:
quelle
Wenn Sie linq verwenden möchten, können Sie Folgendes versuchen:
Ich weiß nicht, welches schneller oder besser ist. Beide arbeiten für mich.
quelle
dict.Values.ToArray()
macht das Gleiche, aber ohne den Aufwand, jeden Wert durch einen Delegaten zu materialisieren.Heutzutage können Sie, sobald Sie LINQ verfügbar haben, die Wörterbuchschlüssel und ihre Werte in eine einzelne Zeichenfolge konvertieren.
Sie können den folgenden Code verwenden:
quelle