diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
index 1c239dc61..347ab888d 100644
--- a/src/Directory.Build.targets
+++ b/src/Directory.Build.targets
@@ -10,4 +10,8 @@
$(DefineConstants);NETSTANDARD;P_LINQ;SUPPORTS_BINDINGLIST;SUPPORTS_ASYNC_DISPOSABLE
+
+
+ $(DefineConstants);SUPPORTS_DICTIONARY_MUTATION_DURING_ENUMERATION
+
diff --git a/src/DynamicData/Cache/Internal/Filter.Dynamic.cs b/src/DynamicData/Cache/Internal/Filter.Dynamic.cs
index 9727c04a3..350ae272b 100644
--- a/src/DynamicData/Cache/Internal/Filter.Dynamic.cs
+++ b/src/DynamicData/Cache/Internal/Filter.Dynamic.cs
@@ -378,7 +378,11 @@ private void OnSourceNext(IChangeSet upstreamChanges)
private void ReFilter(TState predicateState)
{
+ #if SUPPORTS_DICTIONARY_MUTATION_DURING_ENUMERATION
foreach (var key in _itemStatesByKey.Keys)
+ #else
+ foreach (var key in _itemStatesByKey.Keys.ToArray())
+ #endif
{
var itemState = _itemStatesByKey[key];