Ok vì vậy tôi đang cố gắng để có được tất cả các công ty được giao cho cả hai khóa học tồn tại trong một bảng ánh xạ khóa học.Có ai có thể giảm 3 câu lệnh LINQ thành SQL này thành một không?
Bảng ánh xạ khóa học có 2 khóa học FK, trỏ đến hai khóa học khác nhau trong cùng một bảng.
Mỗi khóa học có một gói và các công ty được chỉ định cho các gói.
Tôi đang cố gắng chọn tất cả các công ty được chỉ định cho cả hai nhóm từ cả hai khóa học.
Tôi đã có thể thực hiện việc này (Chỉnh sửa: dường như không, vì OR, bất kỳ ai cũng có thể sửa lỗi này không?) Bằng cách sử dụng 3 truy vấn LINQ khác nhau, nhưng tôi hy vọng có một cách để giảm thành một ngắn gọn và hiệu suất:
Bundle vegasBundle = (from cm in db.VegasToPegasusCourseMaps
join c in db.Courses on cm.VegasCourseID equals c.CourseID
join b in db.Bundles on c.BundleID equals b.BundleID
where cm.VPCMapID == CourseMapID
select b).FirstOrDefault();
Bundle pegasusBundle = (from cm in db.VegasToPegasusCourseMaps
join c in db.Courses on cm.PegasusCourseID equals c.CourseID
join b in db.Bundles on c.BundleID equals b.BundleID
where cm.VPCMapID == CourseMapID
select b).FirstOrDefault();
IQueryable<Company> companyAssigned = from cb in db.CompanyBundles
join c in db.Companies on cb.CompanyID equals c.CompanyID
where cb.BundleID == vegasBundle.BundleID || cb.BundleID == pegasusBundle.BundleID
select c;
return companyAssigned.ToList();
Dường như truy vấn cuối cùng của bạn sẽ nhận được các công ty được gán cho * hoặc * bó thay vì * cả hai * gói. – CAbbott
@CAbbott Tôi nghĩ bạn nói đúng, có cách nào để sửa chữa nó? – BigOmega