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