Tengo List<string> AllowedList
y Dictionary<string,List<string>> MyDictionary
.borrar clave, pares de valores de un diccionario dada una lista de claves para eliminar
Para cada clave en el diccionario, quiero comprobar si está en el AllowedList
, si no quiero borrar la clave y el valor del diccionario.
intuitivamente yo probamos este, que parece ser lo que quería:
foreach (string key in MyDictionary.Keys)
{
if (!AllowedList.Contains(key)) MyDictionary.Remove(key);
}
Sin embargo, me encontré con un InvalidOperationException
: Colección
se modificó; la operación de enumeración no se puede ejecutar.
Estoy seguro de que hay una forma sencilla de evitar esto, pero no lo veo de inmediato.
+1 y creo que la primera línea se puede simplificar a 'var keys = MyDictionary.Keys;' – farfareast
La solución de Seismoid también es válida. Sin embargo, me gusta más esta sugerencia de diferencia de set de linq. – user17753