Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Sintaxe do método LINQ para várias associações à esquerda


Estou assumindo que você deseja ingressar na tabela UserHasPackages porque queria filtrar os resultados para um usuário específico (acabei de colocar um 'SomeUser' porque não tenho certeza de onde veio o 'UserHasPackages.ApplicationUserId') uma vez que não está incluído no modelo de exibição.

Acredito que algo como o seguinte deve funcionar:
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
    });

Você também pode fazer isso usando a sintaxe de consulta:
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
            };