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# 聚合与任意,用于扫描对象,如IEnumerable<;布尔>;_C#_Linq - Fatal编程技术网

C# 聚合与任意,用于扫描对象,如IEnumerable<;布尔>;

C# 聚合与任意,用于扫描对象,如IEnumerable<;布尔>;,c#,linq,C#,Linq,我只是想知道,是否有LINQ大师能够阐明聚合和任何工作是如何进行的 假设我有一个IEnumerable,它存储在给定条件下测试数组的结果。我想确定数组中的任何元素是否为false。有什么理由让我更喜欢其中一个选项吗 IEnumerable<bool> results = PerformTests(); return results.Any(r => !r); //Option 1 return results.Aggregate((h, t) => h &&am

我只是想知道,是否有LINQ大师能够阐明聚合和任何工作是如何进行的

假设我有一个IEnumerable,它存储在给定条件下测试数组的结果。我想确定数组中的任何元素是否为false。有什么理由让我更喜欢其中一个选项吗

IEnumerable<bool> results = PerformTests();

return results.Any(r => !r); //Option 1
return results.Aggregate((h, t) => h && t); //Option 2
IEnumerable results=PerformTests();
返回结果.Any(r=>!r)//选择1
返回结果。聚合((h,t)=>h&&t)//选择2

在生产代码中,我倾向于1,因为它更明显,但出于好奇,我想知道在引擎盖下评估这些代码的方式是否有差异。

是的,当然更喜欢选项1-一旦发现任何错误的值,它就会停止

选项2将遍历整个阵列


当然,还有可读性问题:)

是的,当然更喜欢选项1——一旦发现任何值为false,它就会停止

选项2将遍历整个阵列


当然,还有可读性问题:)

乔恩再次击败了我,但要添加更多的文本:

聚合始终需要使用整个
IEnumerable
,因为这正是它应该做的:从(完整的)源生成数据集。
这是著名的Map/Reduce场景中的“Reduce”。

Jon再次击败了我,但要添加更多的文本:

聚合始终需要使用整个
IEnumerable
,因为这正是它应该做的:从(完整的)源生成数据集。
这是著名的Map/Reduce场景中的“Reduce”。

啊,好吧-我想知道它是否足够聪明,一旦头部出错,就立即停止,因为我知道结果总是错误的。谢谢啊,好吧——我想知道,如果头部一变为假,它就停下来,知道结果总是假的,这是否足够聪明。谢谢感谢这些额外的东西-我一直在使用聚合来进行一些小字符串连接和其他转换,并发现自己在意识到任何()之前自动编写了选项2是一个简单得多的选项。除非您需要为每个连接执行其他操作,否则我建议使用字符串。通过聚合连接IEnumerable。感谢额外的功能-我一直在使用聚合进行一些小字符串连接和其他转换,并发现自己自动编写选项2,在意识到Any()是一个简单得多的选项之前。除非每次连接都需要做其他事情,否则我建议使用string.Join over Aggregate来连接IEnumerable。