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

У меня есть макет приложения, где цепочка наследования, как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 employeesManaged = new List();
        public List EmployeesManaged
        {
            get { return employeesManaged; }
            set { employeesManaged = value; }
        }
    }

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

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

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

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

 public static Manager  GetBestManager(List 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 mList = new List();
            mList.Add(m);
            mList.Add(m2);
            Manager.GetBestManager(mList);

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

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

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