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

LINQ metode syntaks for flere venstre joinforbindelse

Jeg går ud fra, at du vil tilmelde dig UserHasPackages-tabellen, fordi du ønskede at filtrere resultaterne for en bestemt bruger (jeg har lige indsat en 'SomeUser', fordi jeg ikke er sikker på, hvor 'UserHasPackages.ApplicationUserId' kom fra), da det er ikke inkluderet i visningsmodellen.

Jeg mener, at noget i stil med følgende burde virke:

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

Du kan også gøre dette ved at bruge forespørgselssyntaksen:

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



  1. Sådan hentes felt fra MySQL-forespørgselsresultat i bash

  2. NonUniqueObjectException når persist objekt

  3. Administrer MDF-filer i SQL Server 2019

  4. Begrænsning af MySQL-forbindelser fra localhost for at forbedre sikkerheden