Я думаю, что для объединения последовательности всех строк ваша конструкция уже настолько функциональна, насколько вы можете.
Вместо использования String.Join
с пустой строкой, я бы, вероятно, использовал StringBuilder
вместе с методом расширения ForEach
, таким как
public static class MyExtensions {
public static void ForEach(this IEnumerable<T> enumerable, Action<T> action) {
foreach (var entry in enumerable)
action(entry);
}
}
Я бы также определил локальную переменную для последовательности вроде
var seq = new[] {
keyRoot,
controllerName,
actionName
}.Concat(
from param in params select param.Key + param.Value
);
var sb = new StringBuilder();
seq.ForEach(s=>sb.Append(s));
Конечно, использование функции Aggregate
было бы более "функциональным", но, на мой взгляд, она не более читабельна, плюс она снижает производительность, потому что вам нужно создавать промежуточные строки ...