У меня есть классическая таблица 3 - entity, tag и entitytag - структура базы данных.
Чтобы найти все объекты, помеченные определенными тегами, я использую следующий код 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;
Однако, когда у сущностей есть дубликаты тегов (в моем реальном приложении есть веская причина) запрос возвращает сущности, которые не соответствуют всем тегам.
например, в приведенном выше примере кода, если объект был помечен дважды тегом «tag1», а не «tag2», он вернется в результатах, несмотря на несоответствие обоих тегов.
Не могу понять, как исключить эти объекты из результатов?
Или я должен придерживаться совершенно другого подхода?