У меня есть классический 3 table - entity, tag и entitytag - структура базы данных.Linqtosql - Найти все объекты, соответствующие всем тегам в запросе
Для того, чтобы найти все объекты, помеченные определенными тегами Я использую следующий LinqToSql код:
string[] myTags = {"tag1","tag2"};
var query = from m in entity
where m.entitytag.Where(c => myTags.Contains(c.tag.TagName)).Count() == myTags.Count()
select m;
Однако, когда объекты имеют повторяющиеся тег (есть веские причины для этого в моем реальном приложении) query возвращает объекты, которые не соответствуют всем тегам.
например, в приведенном выше примере кода, если объект дважды помечен тегом «tag1», а не «tag2», он вернется в результаты, несмотря на то, что не совпадает с обоими тегами.
Я не могу понять, как исключить эти сущности из результатов?
Или есть совершенно другой подход, который я должен взять?
Я пробовал это, но он все равно возвращает повторяющиеся записи. –
Добавление Select (et => et.tag.TagName) перед тем, как Distinct сделает эту работу. См. Мой ответ на этот вопрос ... –