diff --git a/SabreTools.Metadata.DatFiles/ItemDatabase.cs b/SabreTools.Metadata.DatFiles/ItemDatabase.cs
index 9d9c168b..11226de8 100644
--- a/SabreTools.Metadata.DatFiles/ItemDatabase.cs
+++ b/SabreTools.Metadata.DatFiles/ItemDatabase.cs
@@ -238,18 +238,6 @@ namespace SabreTools.Metadata.DatFiles
return default;
}
- ///
- /// Remove a value from the table, returning success
- ///
- public bool Remove(long index)
- {
-#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER
- return _table.TryRemove(index, out var _);
-#else
- return _table.Remove(index);
-#endif
- }
-
///
/// Remove all values that match a function
///
@@ -261,8 +249,16 @@ namespace SabreTools.Metadata.DatFiles
for (int i = 0; i < Indexes.Length; i++)
#endif
{
- if (func(_table[i]))
- Remove(i);
+ var value = Get(i);
+ if (value is null)
+#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER
+ return;
+#else
+ continue;
+#endif
+
+ if (func(value))
+ TryRemove(i, out _);
#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER
});
#else