C#模型类中的员工-经理关系
我面临着用C#LINQ解决复杂逻辑的困难 我使用core entity framework 3.1生成了一个模型类:C#模型类中的员工-经理关系,c#,.net,linq,C#,.net,Linq,我面临着用C#LINQ解决复杂逻辑的困难 我使用core entity framework 3.1生成了一个模型类: public partial class Employee { public int EmpId { get; set; } public string Fname { get; set; } public string Lname { get; set; }
public partial class Employee
{
public int EmpId { get; set; }
public string Fname { get; set; }
public string Lname { get; set; }
public string Emailid { get; set; }
ublic int? ManagerId { get; set; } //(self-referential integrity to employeeid)
public varchar EmployeeDesignation { get; set; }
}
我有一个行动方法:
public async Task<IActionResult> GetEmployees()
{
var employe = await _employee.GetEmployees();
if (employe == null)
return NotFound();
else
{
//Need a LINQ logic here
}
}
因此,对于每个employeeid,EmployeeDesignation属性需要是基于上述3个标准的助理、经理或主管
LINQ逻辑后的例外输出:
employeeid :8
ftname : Tom
lName : Cru
emailid : Tomc@g.com
managerId: null
EmployeeDesignation: Associate
employeeid :9
fname : nee
lName : wili
emailid : nw@g.com
managerId: 3
EmployeeDesignation: Manager
如何在c#中使用LINQ、EF实现这一点
谢谢分享你的知识
编辑:
可参考下图
如果我没弄错你的话:
private static string GetEmployeeDesignation(Employee employee, IEnumerable<Employee> employees)
{
if (!employee.ManagerId.HasValue)
{
return "Head";
}
if (!employees.Any(m => m.ManagerId == employee.EmpId))
{
return "Associate";
}
return "Manager";
}
你能详细说明一下“报告”的逻辑吗?Associate表示managerId为空?Manager表示managerId不为空?头部呢?@AmenAyach嗨,我添加了新的链接,希望它能帮助更好地理解。嗨,尼娜,你为什么把这个逻辑放在
GetEmployee
方法中?!EmployeeDesignation
是否重复更改@HamedMoghadasi因为GetEmployee加载了一个网格,我需要在其中显示员工、姓名、经理和员工指定,其他详细信息可用,只有员工指定需要根据经理ID逻辑进行计算,我遗漏了这一点,Struck我的意思是,当您在数据库中持久化员工时,为什么您没有指定员工名称?!
private static string GetEmployeeDesignation(Employee employee, IEnumerable<Employee> employees)
{
if (!employee.ManagerId.HasValue)
{
return "Head";
}
if (!employees.Any(m => m.ManagerId == employee.EmpId))
{
return "Associate";
}
return "Manager";
}
var result = employees.Select(m =>
{
m.EmployeeDesignation = GetEmployeeDesignation(m, employees);
return m;
});