public void AddSubset(Subset subset) { if (subset.TotalArea > Area) { return; } var duplicate = Subsets.FirstOrDefault(s => s.Items.SequenceEqual(subset.Items, new ItemDimensionalComparer())); if (duplicate != null) { if (duplicate.TotalValue >= subset.TotalValue) { return; } Subsets.Remove(duplicate); Subsets.Add(subset); } else { Subsets.Add(subset); } }