int countTask = 10;
int begin = 0;
var tasks = Enumerable.Range(0, 100000)
.GroupBy(a =>
{
if (begin++ > countTask) begin = 0;
return begin;
})
.Select(a => a.AsEnumerable())
.Select(a => Task.Run(a.Sum))
.ToArray();
Task.WaitAll(tasks);
var result = tasks.Select(a => a.Result);