sql - Getting all Employees under a Manager C# -


i trying list of of employees under manager in table. manager can go webpage , view every single person under him/her including hierarchies.

an employee consists of this:

public class employee {      int id {get; set;}      string firstname {get; set;}      string lastname {get; set;}      int employeenumber {get; set;}      int manageremployeenumber {get; set;} } 

currently, getting a managers direct reports want show every single person under manager.

example:

(firstname: "aaron", employeenumber: 1, manageremployeeno: null) (firstname: "jack", employeenumber: 2, manageremployeeno: 1) (firstname: "roger", employeenumber: 3, manageremployeeno: 1) (firstname: "nat", employeenumber: 4, manageremployeeno: 2) (firstname: "fred", employeenumber: 4, manageremployeeno: 4) 

this example , managers can go lot deeper this.

this have:

public list<employee> getmanagedemployees(employee manager) {     var managedemployees =_employeedb.employees.where(e => e.manageremployeenumber == manager.employeenumber).tolist();      return managedemployees.any() == false ? null : managedemployees; } 

all appreciated!

if want flat list simple recursion. in pseudo-code, this:

ilist<employee> getemployees(employee manager) {     var result = new list<employee>();      var employees = _employeedb.employees                                .where(e => e.manageremployeenumber == manager.employeenumber)                                .tolist();      foreach (var employee in employees)     {         result.add(employee);         result.addrange(getemployees(employee));     }      return result; } 

there more performant approaches take, simplicity if want recurse on tree trick. may want add checks data problems, such ensuring there no infinite recursions (if somehow 2 employees manage report each other... sounds weird, weird things happen in large companies).

if really want performant, can recursion directly in sql common table expressions. it's been while since i've used that, don't have example handy. it's pretty neat feature of modern sql server instances does allow recursion in query.


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -