sql >> Databáze >  >> RDS >> Mysql

Syntaxe metody LINQ pro vícenásobné levé spojení

Předpokládám, že se chcete připojit k tabulce UserHasPackages, protože jste chtěli filtrovat výsledky pro konkrétního uživatele (právě jsem vložil 'SomeUser', protože si nejsem jistý, odkud pochází 'UserHasPackages.ApplicationUserId'), protože není součástí modelu zobrazení.

Věřím, že něco jako následující by mělo fungovat:

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

Můžete to provést také pomocí syntaxe dotazu:

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. Postgres LIKE '...%' nepoužívá index

  2. DATE_ADD() Příklady – MySQL

  3. Seřazení podle pořadí hodnot v klauzuli SQL IN().

  4. Postgres Array Append a délka pole pro „Array Push“