筛选列表匹配所有ID

时间:2014-06-16 14:22:42

标签: c# linq

我有以下linq查询:

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

FiltersList<int>的位置。以上查询返回与Filters中的任何属性ID匹配的所有产品。

如何更改此设置,以便仅返回与Filters中的所有ID匹配的产品(它还可以包含其他属性,但必须具有在过滤器中具有id的任何属性)。

我想过使用Intersect而不是Any,但我必须使用属性列表(我真的不想这样做)

1 个答案:

答案 0 :(得分:3)

一种可能的解决方案是在产品where子句

中反转逻辑和测试filters.all
AllProducts.Where(p => Filters.All(fa=> p.Attributes.Any(a=> a.ID == fa)));