He heredado una base de datos que no fue diseñada de manera óptima, y necesito manipular algunos datos. Permítanme dar una analogía más común de la clase de cosas que tengo que hacer:¿Cómo hacer una unión externa completa en Linq?
Digamos que tenemos una tabla Student
, un mantenimiento de registros StudentClass
tabla de todas las clases a las que asistió, y una mesa de StudentTeacher
que almacena todos los maestros quien enseñó a este estudiante Sí, sé que es un diseño tonto y tendría más sentido almacenar al profesor en la mesa de clase, pero con eso estamos trabajando.
Ahora quiero limpiar los datos, y quiero encontrar todos los lugares donde un estudiante tiene un profesor pero no hay clases, o una clase pero no hay profesores. SQL así:
select *
from StudentClass sc
full outer join StudentTeacher st on st.StudentID = sc.StudentID
where st.id is null or sc.id is null
¿Cómo se hace eso en Linq?
Nota: esto no es realmente una combinación externa completa, ya que desea excluir las filas donde la unión interna tuvo éxito. Solo menciono esto ya que este es un resultado de búsqueda superior para 'full outer join linq' - entonces si eso es lo que alguien está buscando, entonces las respuestas pueden no ser correctas –
podría ser una solución de alto rendimiento, refiérase a la pregunta a continuación. http: // stackoverflow.com/questions/5489987/linq-full-outer-join/8501701 # 8501701 – vrluckyin