Хорошо, я пытаюсь получить все Компании, назначенные ОБЕИМ курсам, которые существуют в таблице сопоставления курсов.
В таблице сопоставления курсов есть 2 FK CourseID, которые указывают на два разных курса в одной таблице.
У каждого курса есть пакет, и компании назначаются пакетам.
Я пытаюсь выбрать все компании, которые назначены для обоих пакетов из обоих курсов.
Мне удалось это сделать (Изменить: по-видимому, нет, из-за ИЛИ, может ли кто-нибудь это исправить?), Используя 3 разных запроса LINQ, но я надеюсь, что есть способ сократить его до одного для краткости и производительность:
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();