Если я правильно понимаю вашу проблему, я думаю, вам нужен запрос SQL, который выглядит примерно так:
SELECT d.DesignGuid
FROM Design AS d
INNER JOIN URL as u ON d.DesignGuid = u.RelationalGuid
WHERE u.UrlString IN ('urlstring1', 'urlstring2', ... ,'urlstringn')
Я думаю, что-то вроде этого должно работать:
var localUrlStrings = new List<string>() { "urlString1", "urlString2" }
var result =
from d in Design
from u in URL
where d.DesignGuid == u.RelationalGuid
&& localUrlStrings.Contains(u.UrlString)
select new {
d.DesignGuid,
u.UrlString
});
Редактировать: Вы ищете это:
SELECT d.DesignGuid, count(u.URL) as numURLs
FROM Design as d,
Url as u
WHERE d.DesignGuid = u.RelationalGuid
HAVING count(u.URL) = 2
Я не могу проверить это прямо сейчас, но я верю, что это должно сработать (синтаксис может быть немного неправильным, я дважды проверю это утром):
var result =
from d in dataContext.Designs
join u in dataContext.URLs on d.DesignGuid equals u.RelationalGuid into joinTable
from j in joinTable
where localUrlStrings.Contains(j.UrlString)
group j by j.RelationalGuid into groupTable
where groupTable.Count() == localUrlStrings.Count
select groupTable.Key;