Le code que vous avez indiqué :
from c in company
from e in c.Employees
select e;
... produira une liste de tous les employés de toutes les entreprises de l'UE. company
variable. Si un employé travaille pour deux entreprises, il sera inclus deux fois dans la liste.
La seule "jointure" qui pourrait se produire ici est lorsque vous dites c.Employees
. Dans un fournisseur basé sur SQL, cela se traduirait par une jointure interne à partir de la base de données de l'utilisateur. Company
à la table Employee
table.
Cependant, le double- from
est souvent utilisée pour effectuer des "jointures" manuellement, comme ceci :
from c in companies
from e in employees
where c.CompanyId == e.CompanyId
select e;
Cela aurait un effet similaire à celui du code que vous avez posté, avec de potentielles différences subtiles en fonction de ce que l'option employees
contient. Ceci serait également équivalent à ce qui suit join
:
from c in companies
join e in employees
on c.CompanyId equals e.CompanyId
select e;
Si vous vouliez un produit cartésien, cependant, vous pourriez simplement supprimer l'élément where
clause. (Pour que cela vaille la peine, il faudrait probablement modifier la clause select
légèrement, aussi, cependant).
from c in companies
from e in employees
select new {c, e};
Cette dernière requête vous donnera toutes les combinaisons possibles d'entreprises et d'employés.