Как перебрать все объекты из класса на наличие совпадений C#

Допустим у меня есть класс Class1 в котором есть свойства day, month, а также конструктор который принимает и устанавливает значения. Я хочу перебрать все объекты которые были созданы на основе класса Class1 на совпадение свойства day с числом 14 (тобишь мне нужно найти объект в котором свойство day будет равно 14 и дальше с этим объектом работать) Как это можно реализовать?

Мои безуспешные попытки:

Class1 a = new Class1(5, 2);
Class1 b = new Class1(14, 1);
Class1 c = new Class1(23, 9);
Class1 d = new Class1(3, 8);
/*foreach(Class1 i in Class1) {
        if (i.day == 14)
        {
        Console.WriteLine(i.month);
        }
    }*/
namespace TESTSMTH
{
    internal class Class1
    {
        public short day, month;
        public Class1(short day, short month)
        {
            this.day = day;
            this.month = month;
        }
    }
}

Ответы (2 шт):

Автор решения: aepot

Нужно создать коллекцию, массив или список

Class1[] array = [a, b, c, d];

Далее циклом

foreach (Class1 x in array)
{
    if (x.day == 14)
    {
        // ...
    }
}
→ Ссылка
Автор решения: rotabor

Чувствую засаду в этом: "перебрать все объекты которые были созданы на основе класса". То есть для начала нужно отследить все эти объекты. Это можно сделать примерно так:

using System;
using System.Linq;
using System.Collections.Generic;
    internal class Class1 {
        static List<Class1> _list = new List<Class1>();
        public short Day, Month;
        public Class1(short day, short month) {
            Day = day;
            Month = month;
            _list.Add(this);
        }
        public static Class1 GetAtDay(short day) {
            return _list.FirstOrDefault(f => f.Day == day);
        }
    }
static class Program {
    static void Main() {
        Class1 a = new Class1(5, 2);
        Class1 b = new Class1(14, 1);
        Class1 c = new Class1(23, 9);
        Class1 d = new Class1(3, 8);
        var o = Class1.GetAtDay(14);
        if (o != null) Console.WriteLine("{0} {1}", o.Day.ToString(), o.Month.ToString());
        else Console.WriteLine("not found");
    }
}

=>

14 1
→ Ссылка