Wie kann ich ein Wörterbuch mit LINQ filtern und an ein Wörterbuch desselben Typs zurückgeben?

83

Ich habe folgendes Wörterbuch:

Dictionary<int,string> dic = new Dictionary<int,string>();
dic[1] = "A";
dic[2] = "B";

Ich möchte die Elemente des Wörterbuchs filtern und das Ergebnis derselben Variablen zuweisen:

dic = dic.Where (p => p.Key == 1);

Wie kann ich das Ergebnis als Wörterbuch desselben Typs [ <int,string>] zurückgeben?

Ich habe es versucht ToDictionary, aber es funktioniert nicht.

Danke im Voraus.

Homam
quelle
11
Wenn Sie in Zukunft den offensichtlichen Ansatz ausprobiert haben, aber festgestellt haben, dass er nicht funktioniert, geben Sie bitte den Code ein, den Sie versucht haben.
Jon Skeet

Antworten:

189

ToDictionaryist der Weg zu gehen. Es funktioniert - Sie haben es vermutlich nur falsch verwendet. Versuche dies:

dic = dic.Where(p => p.Key == 1)
         .ToDictionary(p => p.Key, p => p.Value);

Trotzdem gehe ich davon aus, dass Sie wirklich einen anderen WhereFilter wollen, da Ihr aktueller immer nur einen Schlüssel findet ...

Jon Skeet
quelle