匹配所有id的过滤列表

本文关键字:过滤 列表 id | 更新日期: 2023-09-27 18:08:53

我有以下linq查询:

FilteredProducts = AllProducts.Where(p => p.Attributes.Any(a => Filters.Contains(a.ID)));

其中FiltersList<int>。上面的查询返回与Filters中的任何属性id匹配的任何产品。

我如何改变这一点,以便只返回与Filters中所有id匹配的产品(它也可以具有其他属性,但必须具有过滤器中具有id的任何属性)。

我想使用相交而不是任何,但然后我将不得不使用属性列表(我真的不想这样做)

匹配所有id的过滤列表

一个可能的解决方案是反转逻辑和测试过滤器。子句

中的所有产品
AllProducts.Where(p => Filters.All(fa=> p.Attributes.Any(a=> a.ID == fa)));