我有項目,可以各有多個關鍵字的列表,以便我有三個表一個Linq ContainsAll方法?
Item -> ItemKeyword <- Keyword
我想回到這裏該項目已在列表中的所有關鍵字的所有項目。例如:
Item 1 has keywords "Rabbit", "Dog", "Cat"
Item 2 has keywords "Rabbit", Hedgehog", "Dog"
我只想返回那些同時包含「Dog」和「Cat」作爲關鍵字的項目。
我不能使用一個包含查詢,因爲這將基本上返回所有這些項目與「狗」或「貓」。
所以我想我要求的是,如果有這樣的事情叫做ContainsAll in linq,或者如果有一些方法我可以執行此功能。
我試圖使用Except和Intersect,但我似乎無法得到正確的結果。
我想有一個單一的查詢,這樣很容易編譯查詢,但這不是一個dealbreaker。
我使用:
- 點NET 4.5
- 的Visual Studio 2012
- C#
- 的LINQ
- 實體框架
- 的SQL Server CE 4.0
除w唉,我會說 - 讓我們看看你有什麼。我期望'!largeCollection.Except(smallCollection).Any())'檢查'smallCollection'中的所有內容都在'largeCollection'中。 – 2014-09-26 12:10:45
我會使用'Intersect' - 'if(largeCollection.Intersect(smallCollection).Count == smallCollection.Count)'應該聲明所有來自'smallCollection'的項目也都在'largeCollection'中。 – Pafka 2014-09-26 12:13:23
或者'largeCollection.Where(x => x.Keywords.Contains(「Dog」)&& x.Keywords.Contains(「Cat」))'這樣可以避免創建另一個集合,並且可讀性更強,但Jon更簡潔。 – helrich 2014-09-26 12:14:01