Ik neem aan dat je lid wilt worden van de UserHasPackages-tabel omdat je de resultaten voor een specifieke gebruiker wilde filteren (ik heb zojuist een 'SomeUser' ingevoerd omdat ik niet zeker weet waar de 'UserHasPackages.ApplicationUserId' vandaan kwam) omdat het is niet opgenomen in het weergavemodel.
Ik denk dat zoiets als het volgende zou moeten werken:
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
});
U kunt dit ook doen met behulp van de querysyntaxis:
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
};