retide
retide

Reputation: 1190

C# About IEnumerable<T>.Aggregate

I did some tests about IList<T>.Aggregate(), but the answer does not make sense to me.

List<int> Data1 = new List<int> { 1,0,0,0,0};

var result = Data1.Aggregate<int>((total, next) => total + total);

The result is 16.

I expected it to be 32.

Can someone explain?

Upvotes: 21

Views: 2470

Answers (1)

SLaks
SLaks

Reputation: 887957

Aggregate doesn't run its callback for the first element in the list. Rather, the first element is used as the initial value for the accumulator (total).
Therefore, your callback only runs four times, not five, and 24 = 16.

Upvotes: 21

Related Questions