Use LINQ Aggregate to Multiply a Series of Digits
Date Published: 05 September 2009
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<<span style="color: #0000ff">int</span>, <span style="color: #0000ff">int</span>, <span style="color: #0000ff">int</span>> 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:
<span style="color: #008000">//Func<int, int, int> producter = (one, two) => one * two;</span>
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.
Tags - Browse all tags
Category - Browse all categories
About Ardalis
Software Architect
Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.