我有经典的 3 表 - 实体、标签和实体标签 - 数据库结构。
为了找到所有标记有特定标签的实体,我使用以下 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”,它会在结果中返回,尽管两个标记都不匹配。
我不知道如何从结果中排除这些实体?
还是我应该采取完全不同的方法?