Метод Contains в Linq конвертируется в оператор IN, пример:
String[] cities = {"London", "Paris", "Madrid"};
from p in context.Person
where cities.Contains(p.Adress.City)
select p
переводится в предложение sql, например: .. WHERE a.City in ('London', 'Paris', 'Madrid')
, где a - псевдоним таблицы адресов после объединения с таблицей Person.
редактирование:
вы могли бы написать один запрос без подзапроса, но это, скорее всего, будет преобразовано в объединение:
var clips = (from c in context.ClipBooks
where c.BookID == 4
select c.Clip).Distinct();
или
var clips = from c in context.Clip
where c.ClicBooks.Any( cb => cb.BookID == 4)
select c
Любой переводится в Exists ()