c# – LINQ从String []追加到StringBuilder
发布时间:2020-12-15 18:19:46 所属栏目:百科 来源:网络整理
导读:我有一个String数组,我想通过LINQ添加到字符串生成器. 我基本上想说的是“对于这个数组中的每个项目,在这个StringBuilder中附加一行”. 我可以使用foreach循环很容易地做到这一点但是下面的代码似乎没有做任何事情.我错过了什么? stringArray.Select(x = st
我有一个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()); 但那真是太可怕了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |