J'ai un projet c#
, et j'ai créé une classe appelée Employees
.
J'ai une nouvelle liste Dans cette classe,:C# défi employé arbre
public class Employees
{
public int Id { get; set; }
public string Name { get; set; }
public int? ManagerId { get; set; }
public List<Employees> employees { get; set; }
}
Imaginez que j'ai la structure suivante montre l'image:
companytree
ensuite dans le programme principal, j'ai cette structure pour représenter l'image ci-dessus:
class Program
{
static void Main(string[] args)
{
var root = new Employees()
{
Id = 15,
Name = "President",
employees = new List<Employees>()
{
new Employees() {
Id = 23, ManagerId = 15, Name = "Director23",
employees = new List<Employees>()
{
new Employees() {
Id = 21, ManagerId = 23, Name = "Manager21",
employees = new List<Employees>()
{
new Employees() { Id = 31, ManagerId=21, Name = "Employee31" },
new Employees() { Id = 41, ManagerId=21, Name = "Employee41" },
new Employees() { Id = 51, ManagerId=21, Name = "Employee51" }
}
},
new Employees() {
Id = 22, ManagerId = 23, Name = "Manager22",
employees = new List<Employees>()
{
new Employees() { Id = 32, ManagerId=22, Name = "Employee32" },
new Employees() { Id = 42, ManagerId=22, Name = "Employee42" },
new Employees() { Id = 52, ManagerId=22, Name = "Employee52" }
}
}
}
},
new Employees() {
Id = 25, ManagerId = 15, Name = "Director25",
employees = new List<Employees>()
{
new Employees() {
Id = 51, ManagerId = 25, Name = "Manager51",
employees = new List<Employees>()
{
new Employees() { Id = 61, ManagerId=51, Name = "Employee61" },
new Employees() { Id = 71, ManagerId=51, Name = "Employee71" },
new Employees() { Id = 81, ManagerId=51, Name = "Employee81" }
}
},
new Employees() {
Id = 62, ManagerId = 25, Name = "Manager62",
employees = new List<Employees>()
{
new Employees() { Id = 72, ManagerId=62, Name = "Employee72" },
new Employees() { Id = 82, ManagerId=62, Name = "Employee82" }
}
}
}
}
}
};
Console.ReadLine();
}
}
Comment créer une fonction où je passe la liste des racines de l'arbre de l'employé et l'ID d'un employé de la société et vous devez rendre votre manager plus proche ou plus haut et aussi l'employé lui-même. Rappelez-vous que vous pourriez passer l'identification d'un directeur (vous devrez rendre le président), l'identification du directeur (vous devrez rendre le directeur), l'identification de l'employé (vous devriez retourner le directeur), l'identité du président revient lui-même. Quelle meilleure façon de faire cette recherche en tenant compte du fait que nous pouvons avoir une structure hiérarchique beaucoup plus grande que cet exemple. Il serait coûteux d'analyser toutes les listes.
Utiliser hastable, dictionnaire, hashset ??
Vous devriez travailler sur vos conventions de nommage et boîtier ... 'Employees' ne devrait pas être votre nom de classe, il devrait être 'Employee' (c'est une entité unique). 'employees' devrait être' Subordinates' ou quelque chose qui décrit _actually_ ce que c'est. Ne mélangez jamais le boîtier comme ça. – maccettura
Je suis d'accord avec vous merci, dans la course pour mettre le poste que j'ai commis cette erreur devrait être employé. La structure des classes n'est pas réelle, mais seulement pour démontrer comment nous pourrions faire cette recherche dans cette structure arborescente – devweb
Qu'avez-vous essayé jusqu'à présent? –