Je vais avoir des problèmes avec LINQ à requête SQL dans le scénario suivant:LINQ to SQL requête sur le pont Tableau
- J'ai des éléments qui ont "Tags" appliqués par une table de bridge.
- J'essaie de filtrer une liste d'éléments dans un sous-ensemble qui contient l'ensemble d'un ensemble de balises spécifié et renvoie la liste filtrée d'éléments en tant que résultat de la requête.
tables impliquées:
Item (ItemId, Name, ...other fields)
Tag (TagId, TagName)
Item_Tag(ItemId, TagId)
À titre d'exemple, si j'avais une liste d'articles avec des tags:
- Item1 w/(Tag1, tag2)
- Item2 w/(Tag1, Tag2)
- Article3 avec (Tag1)
et je voulais obtenir tous les éléments où l'élément a à la fois Tag1 et Tag2 où l'exigence de filtre est fourni comme un int [] des tagIds requis.
En supposant que l'ID d'élément et d'étiquette correspond au numéro à la fin du nom. Le filtre pour cet exemple serait:
int[] tagFilterConditions = int[2]{1, 2};
var query = from i in itemList
//define filter here
où le résultat serait: Item1, Item2 (exclut le point 3 b/c il est pas marqué avec Tag1 ET Tag2)
Je vais avoir J'ai du mal à trouver comment combiner ces tables pour appliquer ce filtre sur la liste des sources, j'ai essayé d'utiliser un predicate builder et plusieurs jointures, mais je n'arrive pas à obtenir les résultats corrects.
Merci, pour toute aide ...
Avez-vous créé mappages (clés étrangères) entre les tables, de sorte que vous pourriez utiliser 'item.Tags' (ou' item.Item_Tags') au lieu d'avoir à interroger explicitement la table 'Item_Tag'? –