Найти максимальное количество списка пользовательских типов

У меня есть макет приложения, где цепочка наследования, какEmployee,Manager,President и т.п.

Класс Employee выглядит так

class Employee
    {
        public int EmployeeId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime HireDate { get; set; }

        public Employee() 
        { 
        }
    }

и класс менеджера выглядит

 class Manager : Employee
    {

        private List<Employee> employeesManaged = new List<Employee>();
        public List<Employee> EmployeesManaged
        {
            get { return employeesManaged; }
            set { employeesManaged = value; }
        }
    }

Я хотел бы написать метод, который находит менеджера, который управляет большинством сотрудников (чье свойство EmployeesManaged.Count является наибольшим). У меня сейчас две проблемы.

как вы увидите из приведенного ниже кода, я должен вручную добавить каждого менеджера в переменную List. Это не долгосрочное решение. Какой эффективный, краткий способ решения этой проблемы?

мой синтаксис Linq неверен.

Я думаю, что первая проблема является наиболее актуальной. Если бы было 1000 объектов Employee, как бы мне обойти добавление каждого из них в список?

 public static Manager  GetBestManager(List<Manager> managerList)
        {
            Manager m = managerList.Select(x => x.EmployeesManaged).Max();

        }

Мой основной метод

Employee e = new Employee();
            e.EmployeeId = 101;
            e.FirstName = "Tom";
            e.LastName = "Jones";
            e.HireDate = DateTime.Now.Subtract(TimeSpan.FromDays(40));

            Employee e2 = new Employee();
            e2.EmployeeId = 102;


            Employee e3 = new Employee();
            e3.EmployeeId = 103;


            Manager m = new Manager();
            m.EmployeeId = 201;
            m.EmployeesManaged.Add(e);
            m.EmployeesManaged.Add(e2);

            Manager m2 = new Manager();
            m2.EmployeesManaged.Add(e3);

            List<Manager> mList = new List<Manager>();
            mList.Add(m);
            mList.Add(m2);
            Manager.GetBestManager(mList);

с текущим синтаксисом я получаю сообщение об ошибке «Не удается неявно преобразовать тип Employee в Manager

Ответы на вопрос(4)

Ваш ответ на вопрос