web-dev-qa-db-ja.com

LINQを使用して辞書をフィルタリングし、同じタイプの辞書に戻すにはどうすればよいですか

次の辞書があります。

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

辞書の項目をフィルタリングし、結果を同じ変数に再割り当てします。

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

同じタイプの辞書として結果を返すにはどうすればよいですか[<int,string>]?

ToDictionaryを試しましたが、うまくいきません。

前もって感謝します。

73
Homam

ToDictionaryが道です。 It does work-あなたはおそらくそれを間違って使っていたと思われます。これを試して:

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

そうは言っても、現在のフィルタでは1つのキーしか検出されないため、別のWhereフィルタが必要だと思います本当に.

162
Jon Skeet