У меня проблемы с запросом LINQ to SQL в следующем сценарии:
- У меня есть элементы, к которым "Теги" применены через таблицу моста.
- I 'm пытается отфильтровать список элементов в подмножестве, которое содержит весь указанный набор тегов и вернуть отфильтрованный список элементов в качестве результата запроса.
Вовлеченные таблицы:
Item (ItemId, Name, ...other fields)
Tag (TagId, TagName)
Item_Tag(ItemId, TagId)
Например, если бы у меня был список предметов с тегами:
- Item1 w / (Tag1, Tag2)
- Item2 w / (Tag1, Tag2)
- Item3 w / (Tag1)
, и я хотел получить все элементы, у которых есть теги Tag1 и Tag2, где требование фильтра предоставляется в виде int [] требуемого tagIds.
Предполагая, что Item и Tag Id совпадают с номером в конце имени.Фильтр для этого примера будет выглядеть следующим образом:
int[] tagFilterConditions = int[2]{1, 2};
var query = from i in itemList
//define filter here
, где результат будет: Item1, Item2 (исключая Item 3 b / c, он не помечен как Tag1 AND Tag2)
IМне трудно разобраться, как объединить эти таблицы для применения этого фильтра в исходном списке. Я пытался использовать построитель предикатов и различные объединения, но просто не могу получить правильные результаты.
Спасибо за любую помощь ...