Tôi giả sử rằng bạn muốn tham gia bảng UserHasPackages vì bạn muốn lọc kết quả cho một người dùng cụ thể (tôi chỉ đặt 'SomeUser' vì tôi không chắc 'UserHasPackages.ApplicationUserId' đến từ đâu) vì nó không được bao gồm trên mô hình chế độ xem.
Tôi tin rằng những thứ như sau sẽ hoạt động:
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
});
Bạn cũng có thể thực hiện việc này bằng cú pháp truy vấn:
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
};