継承チェーン
Employee,Manager,President
などのモックアプリケーションがあります。
従業員クラスは次のようになります
class Employee
{
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime HireDate { get; set; }
public Employee()
{
}
}
Managerクラスは次のようになります
class Manager : Employee
{
private List<Employee> employeesManaged = new List<Employee>();
public List<Employee> EmployeesManaged
{
get { return employeesManaged; }
set { employeesManaged = value; }
}
}
最も多くの従業員を管理しているマネージャー (EmployeesManaged.Count プロパティが最大のマネージャー) を見つけるメソッドを書きたいと思います。現在2つの問題があります。
以下のコードでわかるように、各 Manager を 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);
現在の構文では、「従業員型をマネージャーに暗黙的に変換できません」というエラーが表示されます