我面临着用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因此,对于每个员工,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来实现这一点?
谢谢你分享你的知识。
编辑:
可以参考下面的图像
发布于 2020-09-28 01:06:01
如果我说得对:
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;
});https://stackoverflow.com/questions/64072910
复制相似问题