1
我有以下LINQ查詢:過濾器列表匹配所有的IDS
FilteredProducts = AllProducts.Where(p => p.Attributes.Any(a => Filters.Contains(a.ID)));
凡Filters
是List<int>
。以上查詢返回與Filters
中的任何屬性ID匹配的任何產品。
如何更改此設置,以便只返回匹配Filters
中所有ID的產品(它也可以具有其他屬性,但必須具有在過濾器中具有ID的任何屬性)。
我想過使用相交,而不是任何後來我將不得不使用屬性的列表(我真的不希望這樣做)
您可以反轉邏輯,並在其中使用Filters.All。未經測試,但類似於'FilteredProducts = AllProducts.Where(p => Filters.All(fa => p.Attributes.Any(a => a.ID == fa)));' –
@ Me.Name非常完美,如果你添加這個答案,我會標記它 - 當Janiec提出了一個全部使用的答案但我無法得到內部邏輯正確的時候,我嘗試了將它反轉。 – Pete
啊,很棒,不確定手工語法是否會成立up,但會作爲答案張貼:) –