Parallel LINQ
As the name suggests, parallel LINQ is an extension of the previous LINQ capabilities provided in previous versions of .NET.
In the first solution (Parallel LINQ), Microsoft expert Stephen Toub explains the reasons for this approach in Patterns Of Parallel Programming (available at https://www.microsoft.com/en-us/download/details.aspx?id=19222):
"A significant majority of the work in many applications and algorithms is done through loop control constructs. Loops, after all, often enable the application to execute a set of instructions over and over, applying logic to discrete entities, whether those entities are integral values, such as in the case of a for loop, or sets of data, such as in the case of a for each loop.
Many languages have built-in control constructs for these kinds of loops, Microsoft Visual C#® and Microsoft Visual Basic® being among them, the former with for and foreach keywords, and the latter with For and For Each keywords. For problems that may be considered...