Jeg går ud fra, at du vil tilmelde dig UserHasPackages-tabellen, fordi du ønskede at filtrere resultaterne for en bestemt bruger (jeg har lige indsat en 'SomeUser', fordi jeg ikke er sikker på, hvor 'UserHasPackages.ApplicationUserId' kom fra), da det er ikke inkluderet i visningsmodellen.
Jeg mener, at noget i stil med følgende burde virke:
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
});
Du kan også gøre dette ved at bruge forespørgselssyntaksen:
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
};