There is a neat method for counting the instances of a number in an array using Linq. It may not be ideal when the count is taken every time an addition is made but it is useful when an inventory needs to be taken after multiple additions.
List<int> list = new List<int> { 1, 2, 3, 2, 3, 3 };
Dictionary<int, int> inventory= list.GroupBy(x => x).ToDictionary(g => g.Key,g => g.Count());
foreach (KeyValuePair<int, int> entry in inventory)
{
Console.WriteLine($"Number: {entry.Key} Instances: {entry.Value}");
}