diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs
index ee08f2e8..b8867fd8 100644
--- a/SabreTools.Metadata.Filter/FilterKey.cs
+++ b/SabreTools.Metadata.Filter/FilterKey.cs
@@ -18,6 +18,11 @@ namespace SabreTools.Metadata.Filter
///
public readonly string FieldName;
+ ///
+ /// Cached item type names for filter selection
+ ///
+ private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames();
+
///
/// Validating combined key constructor
///
@@ -149,12 +154,9 @@ namespace SabreTools.Metadata.Filter
if (string.Equals(itemName, "datitem", StringComparison.OrdinalIgnoreCase)
|| string.Equals(itemName, "item", StringComparison.OrdinalIgnoreCase))
{
- // Get all item types
- var itemTypes = TypeHelper.GetDatItemTypeNames();
-
// If we get any matches
string localFieldName = fieldName;
- string? matchedType = Array.Find(itemTypes, t => DatItemContainsField(t, localFieldName));
+ string? matchedType = Array.Find(_datItemTypeNames, t => DatItemContainsField(t, localFieldName));
if (matchedType is not null)
{
// Check for a matching field
diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs
index 433a3037..6d932b49 100644
--- a/SabreTools.Metadata.Filter/FilterRunner.cs
+++ b/SabreTools.Metadata.Filter/FilterRunner.cs
@@ -17,7 +17,7 @@ namespace SabreTools.Metadata.Filter
///
/// Cached item type names for filter selection
///
- private readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames();
+ private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames();
public FilterRunner(FilterObject[] filters)
{