Ich gehe davon aus, dass Sie der UserHasPackages-Tabelle beitreten möchten, weil Sie die Ergebnisse für einen bestimmten Benutzer filtern wollten (ich habe nur einen „SomeUser“ eingegeben, weil ich nicht sicher bin, woher die „UserHasPackages.ApplicationUserId“ stammt). ist nicht im Ansichtsmodell enthalten.
Ich glaube, so etwas wie das Folgende sollte funktionieren:
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
});
Sie können dies auch mit der Abfragesyntax tun:
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
};