c# - Enumerable.Aggregate 错误

标签 c# .net linq linq-to-objects

一切正常,直到将唯一元素的序列传递给此函数。最简单的重现方式是:

var sumOfSquares = Enumerable.Range(5, 1).Aggregate((s, i) => s + i*i);
// sumOfSquares == 5

我认为这个版本的聚合应该在序列只包含一个元素的情况下抛出一个异常。 我是对的还是漏掉了一些细节?

最佳答案

那不应该失败。根据documentation :

The first element of source is used as the initial aggregate value.

所以在这种情况下,您只需返回第一个元素 (5),并且不会执行任何聚合。没有错误。

正如 Anthony Pegram 指出的那样,有 another overload您可以在其中指定聚合的种子值。将种子设置为 0 会给你答案 25,这可能是你想要的。

var sumOfSquares = Enumerable.Range(5, 1).Aggregate(0, (s, i) => s + i * i);

这里当然不应该使用 Aggregate - 您可以改用 Sum。

var sumOfSquares = Enumerable.Range(5, 1).Sum(i => i * i);

我想这只是一个简化的例子。

关于c# - Enumerable.Aggregate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4464341/

相关文章:

c# - DataGridView 标题单元格背景颜色

c# - WPF 工具包 TimePicker 值不会按时间手动输入更改,但会在焦点更改时触发

c# - 测量 "% Time spent in GC"

c# - 在 C# 中,继承树可以达到多深?

c# - 如何使用 List.Distinct 来填充自定义类?

c# - LINQ:如何在获取父类型的子集合时获取父类型的属性

c# - 列出具有交替颜色的项目

.net - 我应该担心混淆我的 .NET 代码吗?

c# - 使用 linq 从集合中删除项目

c# - 如何通过testfixture参数运行测试方法?