Mysql
 sql >> Database >  >> RDS >> Mysql

Sintassi del metodo LINQ per più join a sinistra

Presumo che tu voglia unirti alla tabella UserHasPackages perché volevi filtrare i risultati per un utente specifico (ho appena inserito un "SomeUser" perché non sono sicuro da dove provenga "UserHasPackages.ApplicationUserId") poiché non è incluso nel modello di visualizzazione.

Credo che qualcosa come il seguente dovrebbe funzionare:

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
    });

Puoi anche farlo usando la sintassi della query:

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
            };