我有一個LINQ到在下列情況下的SQL查詢的問題:LINQ到SQL查詢使用的橋接表
- 我有有通過橋接表應用「標籤」的項目。
- 我試圖過濾一個項目列表到一個包含所有指定標籤集合的子集,並返回過濾後的項目列表作爲查詢結果。
表涉及:
Item (ItemId, Name, ...other fields)
Tag (TagId, TagName)
Item_Tag(ItemId, TagId)
舉個例子,如果我有項目與標籤列表:
- 項目1 W /(Tag1中,與Tag2)
- 項目2 W /( Tag1,Tag2)
- Item3 w /(Tag1)
我希望獲得所有項目,其中項目同時具有Tag1和Tag2,其中過濾器要求作爲所需tagIds的int []提供。
假設項目和標籤ID匹配名稱末尾的數字。用於該示例的過濾器將是:
int[] tagFilterConditions = int[2]{1, 2};
var query = from i in itemList
//define filter here
其中結果將是: 項目1,項目2(不包括項目3 B/C它不與Tag1中與與Tag2標籤)
我在一個艱難的時間搞清楚如何組合這些表來將這個過濾器應用到源列表上,我嘗試過使用predicate builder和各種連接,但是不能得到正確的結果。
感謝,任何幫助......
查詢被改編正確的外鍵關係後,開始工作你已經創建映射(外鍵),這樣你可以使用'item.Tags'(或'item.Item_Tags'),而不必顯式地查詢'Item_Tag'表。 –