Если вы настаиваете на том, чтобы делать это LINQy способом:
StringBuilder builder = StringArray.Aggregate(
new StringBuilder(),
(sb, s) => sb.AppendLine(s)
);
В качестве альтернативы, как Люк указал в комментарии к другому сообщению, вы могли бы сказать
Array.ForEach(StringArray, s => stringBuilder.AppendLine(s));
Причина, по которой Select
не работает, заключается в том, что Select
предназначен для проецирования и создания IEnumerable
проекции. Итак, строка кода
StringArray.Select(s => stringBuilder.AppendLine(s))
не выполняет итерацию по StringArray
, вызывая stringBuilder.AppendLine(s)
на каждой итерации. Скорее, он создает IEnumerable<StringBuilder>
, который можно перечислить.
Полагаю, вы могли бы сказать
var e = stringArray.Select(x => stringBuilder.AppendLine(x));
StringBuilder sb = e.Last();
Console.WriteLine(sb.ToString());
но это действительно отвратительно.