sql >> Databasteknik >  >> RDS >> Mysql

LINQ-metodens syntax för flera vänsterkopplingar

Jag antar att du vill gå med i UserHasPackages-tabellen eftersom du ville filtrera resultaten för en specifik användare (jag lade bara in en 'SomeUser' eftersom jag inte är säker på var 'UserHasPackages.ApplicationUserId' kom ifrån) eftersom den ingår inte i vymodellen.

Jag tror att något i stil med följande borde fungera:

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 också göra detta med hjälp av frågesyntaxen:

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. Hur får jag ID för en rad som har MAX- och MIN-värden i SQL

  2. Visa post äldre än 3 månader i sql

  3. SQL-parameteriserad fråga med LIKE '% ? %' PHP

  4. Django:IntegrityError under Many To Many add()