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?

questionAnswers(5)

yourAnswerToTheQuestion