如何解决模型类中的C#员工关系
我面临使用C#LINQ解决复杂逻辑的困难
我有一个使用核心实体框架3.1生成的Model类:
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
}
}
逻辑需要实现:
最初EmployeeDesignation属性为空,但是在LINQ的帮助下,我需要根据以下3个条件分配值
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
因此,对于每个employeeid,根据上述3个条件,EmployeeDesignation属性必须是Associate或Manager或Head。
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来实现这一目标?
感谢您分享知识。
编辑:
可以参考下图
Please click the link to see the image
解决方法
如果我说对了:
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;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。