sql >> Database >  >> RDS >> Mysql

Syntaxis van LINQ-methode voor meerdere left joins

Ik neem aan dat je lid wilt worden van de UserHasPackages-tabel omdat je de resultaten voor een specifieke gebruiker wilde filteren (ik heb zojuist een 'SomeUser' ingevoerd omdat ik niet zeker weet waar de 'UserHasPackages.ApplicationUserId' vandaan kwam) omdat het is niet opgenomen in het weergavemodel.

Ik denk dat zoiets als het volgende zou moeten werken:

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

U kunt dit ook doen met behulp van de querysyntaxis:

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. De beste manieren om corrupte InnoDB-tabel in MySQL te repareren

  2. Invoegen in twee orakeltabellen met een reeks

  3. mysql:hoe vermenigvuldigde delen optellen

  4. Ondersteunt jdbc de Perzische taal?