Jak zrobić pełne połączenie zewnętrzne w Linq?
Odziedziczyłem bazę danych, która nie została zaprojektowana optymalnie i muszę manipulować niektórymi danymi. Pozwólcie, że podam bardziej typową analogię do tego, co muszę zrobić:
Powiedzmy, że mamyStudent
stół, aStudentClass
tabela z zapisem wszystkich klas, w których uczestniczył, aStudentTeacher
stół, który przechowuje wszystkich nauczycieli, którzy uczyli tego ucznia. Tak, wiem, że to głupi projekt i sensowniej byłoby przechowywać nauczyciela w tabeli klasy - ale właśnie z tym pracujemy.
Chcę teraz oczyścić dane i chcę znaleźć wszystkie miejsca, w których uczeń ma nauczyciela, ale nie ma klas ani klasy, ale nie ma nauczycieli. SQL w ten sposób:
select *
from StudentClass sc
full outer join StudentTeacher st on st.StudentID = sc.StudentID
where st.id is null or sc.id is null
Jak to robisz w Linq?