Estoy tratando de comprender las uniones externas a la izquierda en LINQ to Entity. Por ejemplo, tengo las siguientes tablas: 3Linq a Entidad con múltiples combinaciones externas a la izquierda
Company, CompanyProduct, Producto
El CompanyProduct está vinculado a sus dos mesas de padres, de empresas y productos.
Quiero devolver todos los registros de la Compañía y el CompanyProduct asociado, independientemente de que exista o no el producto de la compañía para un producto determinado. En Transact SQL que iría desde la mesa de la empresa utilizando externa izquierda se une como sigue:
SELECT * FROM Company AS C
LEFT OUTER JOIN CompanyProduct AS CP ON C.CompanyID=CP.CompanyID
LEFT OUTER JOIN Product AS P ON CP.ProductID=P.ProductID
WHERE P.ProductID = 14 OR P.ProductID IS NULL
Mi base de datos cuenta con 3 empresas, y 2 registros CompanyProduct assocaited con el ProductID de 14. Por lo tanto los resultados de la consulta SQL son las 3 filas esperadas, 2 de las cuales están conectadas a un Producto y Producto de la Compañía y 1 que simplemente tiene la tabla de la Compañía y los nulos en las tablas Producto y Producto de la Compañía.
Entonces, ¿cómo se escribe el mismo tipo de unión en LINQ to Entity para obtener un resultado similar?
He intentado algunas cosas diferentes pero no puedo obtener la sintaxis correcta.
Gracias.
'.Select (e => e)' no funciona, y puede eliminarse. Por supuesto, si solo está usando la ID, ¿por qué no decir '.Select (e => e.id)'? – StriplingWarrior