原谅我的函数编程noobiness,但是甚至可以使用lamba函数将数组中的每个字符串追加到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();
感谢您的任何启发!
答案 0 :(得分:1)
我还没有测试过,但是下面这样的东西应该有用......
return errors.Aggregate(new StringBuilder("<ul>"), (sb,s) => sb.AppendFormat("<li>{0}</li>", s))
.Append("</ul>");
.ToString();
Aggregate是一个IEnumerable扩展方法......但是我可能会对agruments的顺序错误。就个人而言,我认为这不会给你带来太大的影响,因为它不太可读,而且无论如何都在内部进行foreach
。