Предполагам, че искате да се присъедините към таблицата UserHasPackages, защото искате да филтрирате резултатите за конкретен потребител (току-що поставих „SomeUser“, защото не съм сигурен откъде идва „UserHasPackages.ApplicationUserId“), тъй като не е включен в модела на изгледа.
Вярвам, че нещо като следното трябва да работи:
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
});
Можете също да направите това, като използвате синтаксиса на заявката:
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
};