首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型类中的C#员工管理关系

模型类中的C#员工管理关系
EN

Stack Overflow用户
提问于 2020-09-26 00:55:23
回答 1查看 218关注 0票数 0

我面临着用C# LINQ解决复杂逻辑的困难

我有一个使用核心实体框架3.1生成的Model类:

代码语言:javascript
复制
   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; }
    }

我有一个行动方法:

代码语言:javascript
复制
public async Task<IActionResult> GetEmployees()
        {      
        
            var employe = await _employee.GetEmployees();
            if (employe == null)
                return NotFound();
            else
            {
                    //Need a LINQ logic here 
                    
      
            }
        
        }

逻辑需要实现:

最初,EmployeeDesignation属性将为空,但在LINQ的帮助下,我需要根据以下3项标准分配值

代码语言:javascript
复制
1. EmployeeDesignation  need be “Associate” when no other employee is reporting to this employee 
2. EmployeeDesignation  need be “Manager” when one or more employees are reporting to this employee
3. EmployeeDesignation  need be “Head” when one or more managers are reporting to this employee

因此,对于每个员工,EmployeeDesignation属性需要基于上述3项标准而成为协理、经理或负责人。

LINQ逻辑后的例外输出:

代码语言:javascript
复制
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来实现这一点?

谢谢你分享你的知识。

编辑:

可以参考下面的图像

请单击该链接查看该图像。

EN

回答 1

Stack Overflow用户

发布于 2020-09-28 01:06:01

如果我说得对:

代码语言:javascript
复制
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";
}

因此,您的预期输出可能会:

代码语言:javascript
复制
var result = employees.Select(m =>
{
    m.EmployeeDesignation = GetEmployeeDesignation(m, employees);
    return m;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64072910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档