Насколько я знаю, цикл for является одним из самых быстрых циклов в c #, в этом случае ваш код не может быть сделан параллельным. Так что короткий ответ - нет, его нельзя сделать быстрее.
Длинный ответ, хотя улучшения производительности не будет, здесь нет необходимости использовать построитель строк, вы можете просто добавить его без строителя строк. просто delcare concat в виде строки, и вы можете сделать что-то подобное внутри цикла for
concat += $"{values[positions[i]]},"
Стоит упомянуть одну вещь, хотя, возможно, вы приняли это во внимание, позиция 0 вернет значение «три», запоминаемое в массивах c #, начиная с 0
РЕДАКТИРОВАТЬ: Исходя из того, что пользователь Стив указал, я сделал небольшую попытку и ошибку, и я нашел, что самый быстрый способ сделать это так
string concat3 = "";
for (int i = 0; i < positions.Length; i++)
{
concat3 += values[positions[i]] + ", ";
}
Console.WriteLine(stop.ElapsedTicks);
но мы говорим о 5 тиках (примерно по 20 попыток с каждой) разницы между 3 из них, так что я бы даже не считал это снижением производительности