私はList<string> AllowedList
とDictionary<string,List<string>> MyDictionary
を持っています。削除するキーのリストを指定して、キー、値のペアを辞書から削除する
辞書の各キーについて、それがAllowedList
にあるかどうかをチェックしたい場合は、キーと値を辞書から削除したいと思います。
私は直感的に、私が欲しいものであるように思われ、これを試してみました:
foreach (string key in MyDictionary.Keys)
{
if (!AllowedList.Contains(key)) MyDictionary.Remove(key);
}
しかし、私はInvalidOperationException
に遭遇しました:
コレクションが変更されました。列挙操作が実行されないことがあります。
私はこれの周りに単純な方法があると確信していますが、すぐにはわかりません。
+1と私は最初の行を 'var keys = MyDictionary.Keys;'に簡略化できると思います。 – farfareast
Seismoidの解法も有効です。私は、このlinqセット差の提案を最も楽しんでいます。 – user17753