sql >> Base de Datos >  >> RDS >> Mysql

Sintaxis del método LINQ para combinación izquierda múltiple

Supongo que desea unirse a la tabla UserHasPackages porque desea filtrar los resultados para un usuario específico (simplemente puse 'SomeUser' porque no estoy seguro de dónde proviene 'UserHasPackages.ApplicationUserId') ya que no está incluido en el modelo de vista.

Creo que algo como lo siguiente debería 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
    });

También puede hacer esto usando la sintaxis 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
            };