Mysql
 sql >> Datenbank >  >> RDS >> Mysql

LINQ-Methodensyntax für mehrere Linksverknüpfungen

Ich gehe davon aus, dass Sie der UserHasPackages-Tabelle beitreten möchten, weil Sie die Ergebnisse für einen bestimmten Benutzer filtern wollten (ich habe nur einen „SomeUser“ eingegeben, weil ich nicht sicher bin, woher die „UserHasPackages.ApplicationUserId“ stammt). ist nicht im Ansichtsmodell enthalten.

Ich glaube, so etwas wie das Folgende sollte funktionieren:

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

Sie können dies auch mit der Abfragesyntax tun:

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