Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#模型类中的员工-经理关系_C#_.net_Linq - Fatal编程技术网

C#模型类中的员工-经理关系

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

我面临着用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 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;
});