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