Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 匹配所有ID的筛选器列表_C#_Linq - Fatal编程技术网

C# 匹配所有ID的筛选器列表

C# 匹配所有ID的筛选器列表,c#,linq,C#,Linq,我有以下linq查询: FilteredProducts = AllProducts.Where(p => p.Attributes.Any(a => Filters.Contains(a.ID))); 其中过滤器是一个列表。上述查询返回与过滤器中的任何属性ID匹配的任何产品 如何更改此设置,以便只返回与过滤器中的所有id匹配的产品(它也可以具有其他属性,但必须具有过滤器中具有id的任何属性) 我曾考虑使用Intersect而不是Any,但后来我不得不使用属性列表(我真的不想这样做

我有以下linq查询:

FilteredProducts = AllProducts.Where(p => p.Attributes.Any(a => Filters.Contains(a.ID)));
其中
过滤器
是一个
列表
。上述查询返回与
过滤器中的任何属性ID匹配的任何产品

如何更改此设置,以便只返回与
过滤器中的所有id匹配的产品(它也可以具有其他属性,但必须具有过滤器中具有id的任何属性)


我曾考虑使用Intersect而不是Any,但后来我不得不使用属性列表(我真的不想这样做)

一个可能的解决方案是反转逻辑并测试过滤器。所有这些都在products where子句中

AllProducts.Where(p => Filters.All(fa=> p.Attributes.Any(a=> a.ID == fa)));

你可以颠倒逻辑,使用过滤器。所有这些都在where中。未测试,但类似于
FilteredProducts=AllProducts.Where(p=>Filters.All(fa=>p.Attributes.Any(a=>a.ID==fa))
@Me.Name太好了,如果你把它作为一个答案添加,我会标记它-当Janice给出一个答案使用all时,我尝试将其反转,但我无法纠正内部逻辑太好了,不确定手动语法是否有效,但会将其作为一个答案发布:)