Finde die maximale Anzahl einer Liste von benutzerdefinierten Typen

Ich habe eine Scheinanwendung, bei der eine Vererbungskette gefälltEmployee,Manager,President usw.

Die Mitarbeiterklasse sieht aus wie

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

        public Employee() 
        { 
        }
    }

und die Manager-Klasse sieht aus wie

 class Manager : Employee
    {

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

Ich möchte eine Methode schreiben, die den Manager findet, der die meisten Mitarbeiter verwaltet (dessen EmployeesManaged.Count-Eigenschaft die größte ist). Ich habe derzeit zwei Probleme.

Wie Sie im folgenden Code sehen werden, muss ich jeden Manager manuell zu einer Listenvariablen hinzufügen. Dies ist keine langfristige Lösung. Was wäre eine effektive, prägnante Lösung dafür?

Meine Linq-Syntax ist falsch.

Ich denke, das erste Problem ist am dringlichsten. Wenn es 1000 Mitarbeiterobjekte gäbe, wie würde ich es umgehen, jedes einer Liste hinzuzufügen?

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

        }

Meine Hauptmethode

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);

Mit der aktuellen Syntax erhalte ich den Fehler "Typ Employee kann nicht implizit in Manager konvertiert werden

Antworten auf die Frage(4)

Ihre Antwort auf die Frage