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(??????);
Edy Cu
quelle
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();
Justin Niessner
quelle
@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);
stuartd
quelle
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();
Pop Catalin
quelle
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();
daniele3004
quelle
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
4
foreach (var item in dicNumber)
{
    listnumber.Add(item.Key);
}
Forscher
quelle
Warum nicht am Ende :)
Arman McHitarian
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
}
arun
quelle