Rejoindre trois tables et utiliser une jointure externe gauche
J'ai trois tables. Deux d'entre eux se joindre également, mais vous devrez joindre à un de gauche. Je suis à la recherche d'un beaucoup de code pour ce faire, dans linq mais entre deux tables seulement.
Voici le code SQL que je suis en train de re-coder au sein de LINQ.
SELECT PRSN.NAME
,CO.NAME
,PROD.NAME
FROM PERSON PRSN
INNER JOIN COMPANY CO ON PRSN.PERSON_ID = CO.PERSON_ID
LEFT OUTER JOIN PRODUCT PROD ON PROD.PERSON_ID = PROD.PERSON_ID;
Voici un extrait de code LINQ que je suis en utilisant comme base. Je ne suis pas en mesure de reconstituer le troisième tableau (produit dans mon exemple SQL) via LINQ et avec une jointure externe gauche. L'échantillon est entre les deux tables. Merci pour les conseils.
var leftOuterJoinQuery =
from category in categories
join prod in products on category.ID equals prod.CategoryID into prodGroup
from item in prodGroup.DefaultIfEmpty(new Product{Name = String.Empty, CategoryID = 0})
select new { CatName = category.Name, ProdName = item.Name };
Michael
source d'informationauteur MdeVera
Vous devez vous connecter pour publier un commentaire.
Comment à ce sujet:
EDIT: si vous voulez faire une jointure externe gauche sur toutes les tables, vous pouvez le faire comme ceci:
Prises à partir d'un autre Stackoverflow thread quelque part, il y a de plus lisible façon de le faire:
Il utilise un mélange de requête linq syntaxe et lambda la syntaxe de ce que (je crois) le meilleur résultat. Il n'y a pas de copieux re-aliasing identificateurs, et c'est le plus concis façon de faire ce que j'ai vu.