gpt4 book ai didi

c# - 查找自定义类型列表的最大数量

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:29 26 4
gpt4 key购买 nike

我有一个模拟应用程序,其中的继承链类似于员工、经理、总裁

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()
{
}
}

Manager类看起来像

 class Manager : Employee
{

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

我想编写一个方法来查找管理最多员工(其 EmployeesManaged.Count 属性最大)的经理。我目前有两个问题。

  1. 正如您将在下面的代码中看到的那样,我必须手动将每个 Manager 添加到一个 List 变量中。这不是一个长期的解决方案。什么是解决此问题的有效、简洁的方法?

  2. 我的 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 隐式转换为经理”

最佳答案

1) 这取决于数据的来源。数据库,磁盘文件,内存集合。 List 或任何结构通常由源决定。

2) 您的 LINQ 获得了最大数量,而不是具有最高数量的 Manager。尝试:

public static Manager GetBestManager(List<Manager> managerList)
{
Manager m = managerList.OrderByDescending(x => x.EmployeesManaged.Count).First();
return m;
}

关于c# - 查找自定义类型列表的最大数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17180139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com