是否可以使用 lambda 函数而不是 foreach 来构造字符串构建器?

发布于 2024-08-20 04:44:51 字数 861 浏览 3 评论 0原文

可能的重复:
LINQ 从 String[] 追加到 StringBuilder

请原谅我的函数式编程新手,但是否有可能使用lambda 函数将数组中的每个字符串附加到StringBuilder 对象?

是否可以将此代码:


// string[] errors = ...
StringBuilder sb = new StringBuilder("<ul>");

foreach (var error in errors)
{
    sb.AppendFormat("<li>{0}</li>", error);
}

sb.AppendLine("</ul");
return sb.ToString();


变成这样的内容:


// string[] errors = ...
StringBuilder sb = new StringBuilder("<ul>");

//I know this isn't right, I don't care about a return value
errors.All(s => sb.AppendFormat("<li>{0}</li>", s));

sb.AppendLine("</ul");
return sb.ToString();


感谢您的任何启发!

Possible Duplicate:
LINQ to append to a StringBuilder from a String[]

Forgive my functional programming noobiness, but is it even possible to use a lamba function to append each string in an array to a StringBuilder object?

Is it possible to turn this code:


// string[] errors = ...
StringBuilder sb = new StringBuilder("<ul>");

foreach (var error in errors)
{
    sb.AppendFormat("<li>{0}</li>", error);
}

sb.AppendLine("</ul");
return sb.ToString();


Into something like this:


// string[] errors = ...
StringBuilder sb = new StringBuilder("<ul>");

//I know this isn't right, I don't care about a return value
errors.All(s => sb.AppendFormat("<li>{0}</li>", s));

sb.AppendLine("</ul");
return sb.ToString();


Thanks for any edification!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

つ低調成傷 2024-08-27 04:44:51

我还没有测试过它,但类似下面的东西应该可以工作...

return errors.Aggregate(new StringBuilder("<ul>"), (sb,s) => sb.AppendFormat("<li>{0}</li>", s))
             .Append("</ul>");
             .ToString();

Aggregate 是一个 IEnumerable 扩展方法...但我可能有错误的参数顺序。就我个人而言,我认为这不会给你带来太多好处,因为它的可读性较差,并且无论如何都会在内部执行 foreach

I haven't tested it, but something like the following should work...

return errors.Aggregate(new StringBuilder("<ul>"), (sb,s) => sb.AppendFormat("<li>{0}</li>", s))
             .Append("</ul>");
             .ToString();

Aggregate is an IEnumerable extension method... But I might have the order of agruments wrong. Personally, I do not think this buys you much since it less readable, and is doing a foreach internally anyway.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文