Avec la requête ci-dessous, je fais plusieurs jointures et je les sélectionne toutes. Je veux renvoyer ce résultat dans une liste, donc dans ce cas, j'aurais une liste avec un compte de trois, en supposant qu'il y ait trois adresses associées à cet ordre d'identifiant de client unique ... En ce moment la requête fonctionne mais je mets exp .ToList() il me donne essentiellement une liste 2d (une liste avec un seul élément dans lequel cet élément est une liste de type de 3 éléments.Il est sûr qu'il y a un bon moyen de le faire ... pensées?Plusieurs jointures dans une liste
var exp = (
from t in this.reposOrders.All()
join p1 in this.reposAddress.All()
on t.AddressPrimary equals p1.AddressID into pp1
from p1 in pp1.DefaultIfEmpty()
join p2 in this.reposAddress.All()
on t.AddressSecondary equals p2.AddressID into pp2
from p2 in pp2.DefaultIfEmpty()
join p3 in this.reposAddress.All()
on t.AddressThird equals p3.AddressID into pp3
from p3 in pp3.DefaultIfEmpty()
where t.CustomerID == customerID
select new { p1, p2, p3 }
);
Merci pour vos critiques de la normalisation, mais je suis en désaccord. – Gabe
Cela a été mal formulé de ma part, désolé. Bien que je crois qu'il serait préférable d'utiliser une table de jointure. Avez-vous essayé l'approche que j'ai exposée? Il regroupe essentiellement vos adresses primaires, secondaires et tertiaires en une seule liste d'ID, qui est ensuite interrogée pour obtenir les adresses souhaitées. Comme LINQ est une exécution déferrée, vous ne passerez pas en revue les itérations jusqu'à ce que vous appeliez ToList(). – Randolpho