如何查询2个深度?

问题描述 投票:0回答:1

示例: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; }
}
c# asp.net-mvc entity-framework linq
1个回答
0
投票

一种简单的解决方案是将其分隔在不同的查询中。首先,您查询以人员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();
}
© www.soinside.com 2019 - 2024. All rights reserved.