如果您坚持以 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());
但这真的很可怕。