Mysql
 sql >> Base de données >  >> RDS >> Mysql

Syntaxe de la méthode LINQ pour la jointure gauche multiple

Je suppose que vous voulez rejoindre la table UserHasPackages parce que vous vouliez filtrer les résultats pour un utilisateur spécifique (je viens de mettre un 'SomeUser' parce que je ne sais pas d'où vient le 'UserHasPackages.ApplicationUserId') car il n'est pas inclus dans le modèle de vue.

Je pense que quelque chose comme ce qui suit devrait fonctionner :

var list = context.Packages
    .Join(context.Containers, p => p.ContainerID, c => c.ID, (p, c) => new { p, c })
    .Join(context.UserHasPackages, pc => pc.p.ID, u => u.PackageID, (pc, u) => new { pc.p, pc.c, u })
    .Where(pcu => pcu.u.UserID == "SomeUser")
    .Select(pcu => new
    {
        pcu.p.ID,
        pcu.c.Name,
        pcu.p.Code,
        pcu.p.Code2
    });

Vous pouvez également le faire en utilisant la syntaxe de requête :

var query = from package in context.Packages
            join container in context.Containers on package.ContainerID equals container.ID
            join userHasPackage in context.UserHasPackages on package.ID equals userHasPackage.PackageID
            where userHasPackage.UserID == "SomeUser"
            select new
            {
                package.ID,
                container.Name,
                package.Code,
                package.Code2
            };