Клиенты где
OrderIds в дочерней коллекции являются подмножеством идентификаторов в коллекции в памяти.
from c in myDC.Customer
where c.Orders.All(o => myList.Contains(o.ID))
select c;
Клиенты, где
OrderIds в коллекции in-memory являются подмножеством идентификаторов в дочерней коллекции.
from c in myDC.Customers
where (from o in c.Orders
where myList.Contains(o.ID)
group o.ID by o.ID).Distinct().Count() == myList.Count()
select c;
Клиенты, где
Идентификаторы в коллекции в памяти устанавливаются равными идентификаторам в дочерней коллекции.
from c in myDC.Customers
let Ids = c.Orders.Select(o => o.ID).Distinct()
where Ids.Count() == myList.Count()
&& Ids.All(id => myList.Contains(id))
select c;
Все эти сгенерированные sql для меня.
PS - они предполагают, что идентификаторы уже различны в myList. Если они еще не сделаны, используйте:
myList = myList.Distinct().ToList();
PSS - подходит для списков до ~ 2000 наименований. Выше этого значения будут переведены в sql, а затем sql server будет barf на количество параметров.