我有以下linq查询:
FilteredProducts = AllProducts.Where(p => p.Attributes.Any(a => Filters.Contains(a.ID)));
Filters
是List<int>
的位置。以上查询返回与Filters
中的任何属性ID匹配的所有产品。
如何更改此设置,以便仅返回与Filters
中的所有ID匹配的产品(它还可以包含其他属性,但必须具有在过滤器中具有id的任何属性)。
我想过使用Intersect而不是Any,但我必须使用属性列表(我真的不想这样做)
答案 0 :(得分:3)
一种可能的解决方案是在产品where子句
中反转逻辑和测试filters.allAllProducts.Where(p => Filters.All(fa=> p.Attributes.Any(a=> a.ID == fa)));