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


83

私は次の辞書を持っています:

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

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

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

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

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

前もって感謝します。


11
将来、明らかなアプローチを試してもうまくいかない場合は、試したコードを投稿してください。
Jon Skeet

回答:


189

ToDictionary行く方法です。それ機能します-おそらく、あなたはそれを間違って使用していただけです。これを試して:

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

そうは言っても、現在のフィルターでは1つのキーしか見つからないため、実際には別のWhereフィルターが必要だと思います...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.