Ich habe eine Tabelle von Mitarbeitern. Jeder Mitarbeiter hat einen Manager und jeder Manager hat einen Manager und so weiter. Also für einen Manager möchte ich eine Abfrage durchführen, so dass ich alle meine Teammitglieder habe, und ich habe alle ihre Teammitglieder und so weiter. Was ist der beste Weg, dies in einer EF Linq-Anweisung zu tun. Idealerweise möchte ich eine Liste der Mitarbeiter und weiß, in welchem Team sie sich befinden.Wie selbstreferenzierende Tabelle
Antwort
Ich bin nicht 100% sicher, wie Sie das in EF lösen, und ich denke, es könnte viele Fragen (eine für jeden Manager) wenn du Pech hast). Wie ich es tun würde, ist es mit Ihrem Top-Mitarbeiter zu beginnen und alle Mitarbeiter, die diesen Manager als Manager hat. Dann würde ich rekursiv alle Manager in der Menge der Mitarbeiter nehmen, die Sie gerade bekommen haben und ihre IDs extrahieren. Wenn Sie alle IDs haben, können Sie die DB für Mitarbeiter abfragen, die eine der IDs als ihren Manager haben.
Haben Sie meinen Standpunkt verstanden? Dies führt zu einer Abfrage pro Ebene anstelle einer Abfrage pro Manager. Aber vielleicht löst EF dieses Problem, da bin ich mir nicht sicher. Aber ich denke, Sie müssen es rekursiv tun.
Ich würde darauf abzielen, für so etwas wie:
public IList<Employees> GetEmployeesForManager(int managerId)
{
return GetEmployeesForManagers(new List<int>() { managerId });
}
public IList<Employees> GetEmployeesForManagers(IList<int> managerIds)
{
var listOfEmployees = // Get the employees
var listOfManagers = listOfEmployees.Where(y => y.IsManager).Select(y => y.Id).ToList();
if(listOfManagers.Count >= 0)
listOfEmployees.AddRange(GetEmployeesForManagers(listOfManagers));
return listOfEmployees;
}
- 1. Wie schreibe ich eine AREL-Anweisung in eine selbstreferenzierende Tabelle?
- 2. Selbstreferenzierende Verbindungen in Relay?
- 3. Mehrere selbstreferenzierende Navigationseigenschaften
- 4. Selbstreferenzierende Klassendefinition in Python
- 5. Selbstreferenzierende Integritätsbedingung in MS SQL
- 6. Selbstreferenzierende Abfrage und nicht gleich
- 7. Selbstreferenzierende Generics in Java
- 8. Selbstreferenzierende Renderbuffer in OpenGL
- 9. Benutzerdefinierte JsonConverter selbstreferenzierende Schleife
- 10. Selbstreferenzierende Beziehung mit Follower | Freunde Benutzer
- 11. Telerik RadGridView selbstreferenzierende Hierarchiefilterung, winforms
- 12. LINQ to SQL für selbstreferenzierende Tabellen?
- 13. Selbstreferenzierende Schleife in ASP.NET Core erkannt
- 14. Selbstreferenzierende Schleife für Eigenschaft in Webanwendung erkannt
- 15. Selbstreferenzierende Einheit fügt zwei Datensätze ein
- 16. So verbessern Sie die Löschzeiten in Oracle für eine selbstreferenzierende Tabelle
- 17. Sollten Sie eine selbstreferenzierende Tabellenspalte einen Fremdschlüssel erstellen?
- 18. In EF suche ich nach Duplikaten und mache eine selbstreferenzierende Abfrage, wie schreibe ich diese Abfrage?
- 19. Html Tabelle wie Struktur ohne Tabelle
- 20. wie Tabelle HTML-Tabelle in PDF exportieren?
- 21. Tabelle analysieren, Tabelle optimieren, wie oft?
- 22. Selbstreferenzierende Entität Raise Kann keine gültige Reihenfolge für abhängige Operationen ermitteln
- 23. Warum führt die Konsolenausgabe dazu, dass das selbstreferenzierende Stapelscript sauber beendet wird?
- 24. Wie eine Tabelle
- 25. Wie berechnet% in Tabelle
- 26. Wie Anzeigegitter mit Tabelle
- 27. Wie meine MySQL-Tabelle
- 28. Wie in einer Tabelle
- 29. Wie schrumpfen pg_toast Tabelle?
- 30. Tabelle = Tabelle vs Tabelle. Daten (Tabelle)
ich um mit Google gesucht haben und Sie können richtig sein. – arame3333
Und dann würde ich definitiv für meine Lösung gehen :). Ich schätze, du kannst es mit einigen sehr komplizierten Lambdas machen, aber was ist der Punkt, an dem du es einfach halten kannst? Diese Lösung garantiert, dass Sie mehr Abfragen haben möchten als in Ihrer Organisation. –
Der Code muss aufgeräumt werden. Wenn Sie zur Sammlung hinzufügen, sollten Sie die AddRange-Methode verwenden – arame3333