From 4b3955af77233e6bb761a615f11f7465680768e3 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 12 Nov 2024 19:57:58 -0500 Subject: [PATCH] HashSet is easier than Distinct --- SabreTools.DatFiles/DatFile.Removal.cs | 8 +++----- SabreTools.DatTools/Replacer.cs | 14 ++++++-------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/SabreTools.DatFiles/DatFile.Removal.cs b/SabreTools.DatFiles/DatFile.Removal.cs index 76a86b4e..568b7968 100644 --- a/SabreTools.DatFiles/DatFile.Removal.cs +++ b/SabreTools.DatFiles/DatFile.Removal.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; #if NET40_OR_GREATER || NETCOREAPP using System.Threading.Tasks; #endif @@ -150,12 +149,11 @@ namespace SabreTools.DatFiles return; // Get the combined list of fields to remove - var fieldNames = new List(); + var fieldNames = new HashSet(); if (itemFieldNames.ContainsKey(itemType)) - fieldNames.AddRange(itemFieldNames[itemType]); + fieldNames.IntersectWith(itemFieldNames[itemType]); if (itemFieldNames.ContainsKey("item")) - fieldNames.AddRange(itemFieldNames["item"]); - fieldNames = fieldNames.Distinct().ToList(); + fieldNames.IntersectWith(itemFieldNames["item"]); // If the field specifically contains Name, set it separately if (fieldNames.Contains(Models.Metadata.Rom.NameKey)) diff --git a/SabreTools.DatTools/Replacer.cs b/SabreTools.DatTools/Replacer.cs index f1d822e4..b5561a8e 100644 --- a/SabreTools.DatTools/Replacer.cs +++ b/SabreTools.DatTools/Replacer.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using SabreTools.Core.Tools; using SabreTools.DatItems; using SabreTools.DatItems.Formats; @@ -63,12 +62,11 @@ namespace SabreTools.DatTools return; // Get the combined list of fields to remove - var fieldNames = new List(); + var fieldNames = new HashSet(); if (itemFieldNames.ContainsKey(itemType)) - fieldNames.AddRange(itemFieldNames[itemType]); + fieldNames.IntersectWith(itemFieldNames[itemType]); if (itemFieldNames.ContainsKey("item")) - fieldNames.AddRange(itemFieldNames["item"]); - fieldNames = fieldNames.Distinct().ToList(); + fieldNames.IntersectWith(itemFieldNames["item"]); // If the field specifically contains Name, set it separately if (fieldNames.Contains(Models.Metadata.Rom.NameKey)) @@ -88,9 +86,9 @@ namespace SabreTools.DatTools // Handle special cases switch (datItem, repDatItem) { - case (Disk disk, Disk repDisk): ReplaceFields(disk, repDisk, fieldNames); break; - case (Media media, Media repMedia): ReplaceFields(media, repMedia, fieldNames); break; - case (Rom rom, Rom repRom): ReplaceFields(rom, repRom, fieldNames); break; + case (Disk disk, Disk repDisk): ReplaceFields(disk, repDisk, [.. fieldNames]); break; + case (Media media, Media repMedia): ReplaceFields(media, repMedia, [.. fieldNames]); break; + case (Rom rom, Rom repRom): ReplaceFields(rom, repRom, [.. fieldNames]); break; } #endregion