私は古典的な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;
ただし、エンティティに重複するタグがある場合(実際のアプリではこれには正当な理由があります)、クエリはすべてのタグに一致しないエンティティを返します。
たとえば、上記のコードサンプルでは、エンティティが「tag2」ではなく「tag1」で2回タグ付けされている場合、両方のタグが一致していなくても結果に返されます。
これらのエンティティを結果から除外する方法がわかりませんか?
それとも、私が取るべき完全に異なるアプローチがありますか?