Use LINQ Aggregate to Multiply a Series of Digits

The LINQ Aggregate() extension method uses a Func<int, int, int> to operate on items in a series.  If you want to use it, for example, to return the product of each value with its successor, you can do something like this:

Func<int, int, int> producter = (one, two) => one * two;
var result = subString.ToCharArray().ToDigits().Aggregate(producter);

Of course, you don’t need the intermediate value.  You can simply use a lambda directly for the Aggregate()’s parameter:

//Func<int, int, int> producter = (one, two) => one * two;
var result = subString.ToCharArray().ToDigits().Aggregate((p1,p2) => p1 * p2);

With a loop to keep track of the largest result returned for a substring of length 5, you can easily use this technique to solve Euler 8.

6 Comments

Add a Comment