Итак, у меня есть две таблицы Site and Contact, которые имеют отношение «многие-многие» через таблицу ContactSites. Таблицы Site и Contact имеют атрибут Boolean, называемый Deleted. Я пытаюсь попытаться написать запрос LINQ, который содержит список всех контактов, которые имеют удаленный атрибут = ложь и которые связаны сайты, которые также имеют удаленный атрибут = ложныйEF Linq Несколько внутренних объединений с использованием вложенных подзапросов
Вот код, я использую:
from c in Contacts
where c.Deleted == false
select new{c.LName, c.FName, SiteContactSites =
(from cs in ContactSites
where cs.Contact_ID == c.ID
select new{ cs.Contact_ID, cs.Site_ID, Sites =
(from s in Sites
where cs.Site_ID == s.ID &&
s.Deleted == false
select cs).First()}).First()}
но результаты, похоже, действуют как внешнее соединение против внутреннего соединения, которое я хочу.
Я специально искал способ сделать это с вложенными подзапросов и не присоединяется к которой будет:
from c in Contacts
join cs in ContactSites on c.ID equals cs.Contact_ID
join s in Sites on cs.Site_ID equals s.ID
where c.Deleted == false && s.Deleted == false
select c
Любая помощь приветствуется
делает второй - простой, лаконичный - пример кода работы? Если да, зачем вам подзапросы? – lisp
Хорошо, второй пример кода работает при записи в linqpad, но не работает в C# vs2012, так как нет модели для ContactSites – user2129585
, но тогда первый квартер тоже не будет работать, потому что вы присоединяетесь к ContactSites. – lisp