Question

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?

 21  2466  21
1 Jan 1970

Solution

 21

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.

2011-05-19