У меня есть этот классический сценарий, где у меня есть таблица User и таблица Contact, содержащая только столбцы UserId и ContactId (так что это отношение многие ко многим отношениям). То, что я хотел бы, это запрос, который дает мне список идентификаторов пользователей с количеством общих контактов с указанным пользователем. В простом старом SQL у меня есть следующий запрос (контакты пользователя и самого пользователя отфильтрованы, чтобы получить Facebook как предложения друзей):
SELECT COUNT(c1.ContactId) as CommonContact, c2.UserId
from Contacts as c1
inner join Contacts as c2 on c1.ContactId = c2.ContactId
Where c1.UserId = @Id AND c2.UserId != @Id
AND c2.UserId NOT IN (SELECT ContactId from Contacts Where UserId = @Id)
Group By c2.UserId
ORDER BY CommonContact Desc
Этот простой запрос прекрасно работает, но я не могу понять, как написать тот же запрос в LINQ to Entity, потому что в модели Entity Framework у меня есть сущность User, у которой есть свойство навигации Contact, но таблицы соединений там нет. ...
Большое спасибо за любую помощь ...