Aggregate vs. Any,用于扫描诸如IEnumerable <bool>之类的对象

Jon*_*tus 1 c# linq

只是想知道是否有任何LINQ大师可能能够阐明Aggregate和Any如何在幕后工作.

想象一下,我有一个IEnumerable,它存储测试给定条件的数组的结果.我想确定数组的任何元素是否为false.有什么理由我更喜欢一种选择吗?

IEnumerable<bool> results = PerformTests();

return results.Any(r => !r); //Option 1
return results.Aggregate((h, t) => h && t); //Option 2
Run Code Online (Sandbox Code Playgroud)

在生产代码中,我倾向于1,因为它更加明显,但出于好奇,我们想知道这些内容的评估方式是否存在差异.

Jon*_*eet 8

是的,肯定更喜欢选项1 - 它会在找到任何错误的值时立即停止.

选项2将遍历整个阵列.

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