Konvertieren Sie das Wörterbuch in eine Listensammlung in C #


93

Ich habe ein Problem beim Versuch, ein Wörterbuch in eine Liste zu konvertieren.

Beispiel, wenn ich ein Wörterbuch mit Vorlagenzeichenfolge als Schlüssel und Zeichenfolge als Wert habe. Dann möchte ich den Wörterbuchschlüssel in eine Listensammlung als Zeichenfolge konvertieren.

Dictionary<string, string> dicNumber = new Dictionary<string, string>();
List<string> listNumber = new List<string>();

dicNumber.Add("1", "First");
dicNumber.Add("2", "Second");
dicNumber.Add("3", "Third");

// So the code may something look like this
//listNumber = dicNumber.Select(??????);

5
Fragen Sie nach einer Liste der Schlüssel aus dem Wörterbuch? Wenn ja, gibt es eine Keys-Eigenschaft im Wörterbuch, die Ihnen das gibt.
Brian Rasmussen

Antworten:


175

So konvertieren Sie die Schlüssel in eine eigene Liste:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList();

Oder Sie können es verkürzen und sich nicht einmal die Mühe machen, select auszuwählen:

listNumber = dicNumber.Keys.ToList();

@Brian - Ich war in meiner Bearbeitung dort. Ich wollte zuerst die Auswahlmethode zeigen, da das OP danach fragte, und dann die Alternative zeigen. :-)
Justin Niessner

Also dachte ich mir, also entfernte ich meinen Kommentar.
Brian Rasmussen

1
das war wirklich hilfreich. Ich musste .Where (...) auf das Diktat anwenden, bevor ich die Schlüssel zurückgab, aber diese Methode gibt kein Wörterbuch zurück, sodass ich nicht auf die Keys-Eigenschaft zugreifen konnte. mit dieser Auswahl nach dem wo hat
Martín Coll

22

Alternative:

var keys = new List<string>(dicNumber.Keys);

4
Die Arbeit mit .NET Compact Framework 2.0 (also kein Linq) war für mich die beste Option.
Michael Murphy

Wenn Sie LINQ nicht verwenden können, scheinen diese Optionen die besten zu sein.
user2000950

17

Wenn Sie Linq verwenden möchten, können Sie das folgende Snippet verwenden:

var listNumber = dicNumber.Keys.ToList();

9

Wenn Sie Schlüssel konvertieren möchten:

List<string> listNumber = dicNumber.Keys.ToList();

sonst, wenn Sie Werte konvertieren möchten:

List<string> listNumber = dicNumber.Values.ToList();

Dies wird funktionieren, ist aber möglicherweise nicht in der von Ihnen erwarteten Reihenfolge, selbst das Diktat wurde zuvor über Schlüssel bestellt, dikt.Werte sind nicht ...
BooNonMooN


3

Wenn Sie die Dictionary-Schlüsselauflistung an ein Methodenargument übergeben möchten.

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.