Verwenden von Entity Framework/LINQ, ich brauche Hilfe mit den folgenden.Wie frage ich eine Junction-Tabelle
Die Datenbank enthält eine Tabelle mit Personen mit einer Identitätsspalte von PersonId. Es gibt auch eine Skills-Tabelle mit einer Identitätsspalte von SkillId. Diese beiden sind über eine dritte Tabelle PeopleSkills verbunden, die eine eigene Identitätsspalte PeopleSkillsId, eine fremde Spalte, die auf PersonId verweist, und eine fremde Spalte, die auf SkillId verweist, hat.
Die Methode, die ich versuche zu schreiben, ist ein Parameter des Typs List übergeben, der eine beliebige Anzahl von Fähigkeiten enthält, die wir suchen. Die Methode sollte eine Liste zurückgeben, die mit allen Fähigkeiten in der Eingabeparameterliste verknüpft ist. Wie erstelle ich eine Liste, die alle Personen ausschließt, die nicht über alle Fähigkeiten in der Skills-Liste verfügen?
Das Problem, das ich habe, ist, dass ich sehr wenig Erfahrung mit SQL habe. Ich habe viele andere Programmiererfahrung, aber SQL ist für mich immer etwas grob. Ich habe über Join nachgedacht, aber das wird nicht funktionieren. Wenn meine Person Fähigkeiten A & B hat und die Suchliste Elemente für B & C enthält, würde ein Join sie auf B abgleichen und die Person zurückgeben. Ich brauche diese Person ausgeschlossen werden, weil er nicht beide B & C.
Ich habe auch darüber nachgedacht, durch die Fähigkeiten Liste und einen Filter zu erstellen, aber das scheint hässlich. Dies scheint nur ein Problem zu sein, für das LINQ entwickelt wurde, indem eine Liste verwendet wird, um eine andere Liste abzufragen, und dass es eine elegante Lösung dafür geben sollte.
Ich würde gerne darüber nachdenken; Ich werde innerhalb der nächsten 24 Stunden mit einer umfassenden Antwort auf Sie zurückkommen, falls jemand anderes dies noch nicht getan hat. –