示例:A是经理,B是A的下属,C是B的下属。
我需要做的是显示在A的屏幕上显示的下属列表,这些下属是B和C的信息。这就是我现在所拥有的,它将显示谁拥有A作为其经理的人,例如B等。
displayList = db.LeaveApplicationDbSet
.Where(l => db.EmployeeDbSet
.FirstOrDefault(e => e.user_id.Equals(l.UserId))
.manager_id.Equals(userDetails.EmployeeId)
);
关于如何获得层次结构的子级部分的任何想法?例如:A-> B-> C,因此从A的角度来看,他/她应该可以看到B和C的信息
更新:
public class MysqlDbContext: DbContext
{
public MysqlDbContext() : base(dbName)
{ }
public DbSet<Employee> EmployeeDbSet { get; set; }
}
public class Employee : IValidatableObject
{
[Column("id")]
public int id { get; set; }
[Required]
[Column("user_id")]
public string user_id { get; set; }
[Column("full_name")]
public string full_name { get; set; }
[Required]
public string manager_id { get; set; }
}
一种简单的解决方案是将其分隔在不同的查询中。首先,您查询以人员A为经理的员工。然后,查询具有B作为经理的员工。像这样:
//All employees of person A
var B = db.LeaveApplicationDbSet.Where(e => e.manager_id == "A");
var C = new List<Employee>();
//All employees from B
foreach(var i in B){
var C = db.LeaveApplicationDbSet.Where(e => e.manager_id == i.id).ToList();
}