c# – LINQ从String []追加到StringBuilder

前端之家收集整理的这篇文章主要介绍了c# – LINQ从String []追加到StringBuilder前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个String数组,我想通过LINQ添加到字符串生成器.

我基本上想说的是“对于这个数组中的每个项目,在这个StringBuilder中附加一行”.

我可以使用foreach循环很容易地做到这一点但是下面的代码似乎没有做任何事情.我错过了什么?

stringArray.Select(x => stringBuilder.AppendLine(x));

这工作的地方:

foreach(String item in stringArray)
{
  stringBuilder.AppendLine(item);
}

解决方法

如果您坚持以LINQy方式执行此操作:
StringBuilder builder = StringArray.Aggregate(
                            new StringBuilder(),(sb,s) => sb.AppendLine(s)
                        );

或者,正如Luke在另一篇文章评论中指出的那样,你可以说

Array.ForEach(StringArray,s => stringBuilder.AppendLine(s));

Select不起作用的原因是Select用于投影和创建投影的IEnumerable.所以代码

StringArray.Select(s => stringBuilder.AppendLine(s))

不会在每次迭代时迭代调用stringBuilder.AppendLine的StringArray.相反,它创建了一个IEnumerable< StringBuilder>可以列举的.

我想你可以说

var e = stringArray.Select(x => stringBuilder.AppendLine(x));
StringBuilder sb = e.Last();
Console.WriteLine(sb.ToString());

但那真是太可怕了.

猜你在找的C#相关文章