using System.Threading.Tasks;
public static void Main()
string[] documents = new[] { 'n', 'a', 's', 'j', 'a', 'l', 'v', 'g', 'a', 'f', 'f' }
.Select((item, index) => $"{item}-{index}")
Console.WriteLine($"Documents: [{String.Join(", ", documents)}]");
var grouped = documents.GroupBy(item => item[0]);
ParallelOptions options = new()
MaxDegreeOfParallelism = Environment.ProcessorCount
Parallel.ForEach(grouped, options, grouping =>
foreach (var document in grouping)
Console.WriteLine($"Processing: {document}");