Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 是否可以使用lambda函数而不是foreach来构造stringbuilder?_Linq_Functional Programming_Lambda - Fatal编程技术网

Linq 是否可以使用lambda函数而不是foreach来构造stringbuilder?

Linq 是否可以使用lambda函数而不是foreach来构造stringbuilder?,linq,functional-programming,lambda,Linq,Functional Programming,Lambda,可能重复: 请原谅我的函数式编程没有必要,但甚至可以使用lamba函数将数组中的每个字符串附加到StringBuilder对象吗 是否可以打开此代码: // string[] errors = ... StringBuilder sb = new StringBuilder("<ul>"); foreach (var error in errors) { sb.AppendFormat("<li>{0}</li>", error); } sb.AppendLin

可能重复:

请原谅我的函数式编程没有必要,但甚至可以使用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();


//字符串[]错误=。。。
StringBuilder sb=新的StringBuilder(“
    ”); foreach(错误中的var错误) { sb.AppendFormat(“
  • {0}
  • ”,错误); }
    sb.AppendLine(“我还没有测试过它,但是像下面这样的东西应该可以工作

    return errors.Aggregate(new StringBuilder("<ul>"), (sb,s) => sb.AppendFormat("<li>{0}</li>", s))
                 .Append("</ul>");
                 .ToString();
    
    返回错误.Aggregate(新的StringBuilder(“
      ”)(sb,s)=>sb.AppendFormat(“
    • {0}
    • ”,s)) .附加(“
    ”); .ToString();

    Aggregate是一种IEnumerable扩展方法……但我可能对agruments的顺序有误。就我个人而言,我认为这不会给你带来太多好处,因为它可读性较差,而且在内部执行
    foreach

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

    return errors.Aggregate(new StringBuilder("<ul>"), (sb,s) => sb.AppendFormat("<li>{0}</li>", s))
                 .Append("</ul>");
                 .ToString();
    
    返回错误.Aggregate(新的StringBuilder(“
      ”)(sb,s)=>sb.AppendFormat(“
    • {0}
    • ”,s)) .附加(“
    ”); .ToString();

    Aggregate是一种IEnumerable扩展方法……但我可能对agruments的顺序有误。就我个人而言,我认为这不会给您带来太多好处,因为它可读性较差,并且在内部执行了一个
    foreach

    重复我认为这应该可以工作,除了lambda函数参数应该是“(sb,s)=>”(第一个参数是current state,它是字符串生成器,第二个参数是“errors”集合中的一个单错误字符串。@托马斯:谢谢!这正是我想要的。我已经更正了这个示例。RWFP非常好…太棒了!我同意它的可读性较差,比任何东西都奇怪。谢谢!关于可读性-我认为这是一个部分函数应用程序可以使代码变得更好。想象一下,您可以只编写:Aggregate(…,StringBuilder.AppendFormat(
  • {0}
  • )。(虽然这在C#中可能无法很好地工作)我认为这应该可以工作,除了lambda函数参数应该是“(sb,s)=>”(第一个参数是current state,它是字符串生成器,第二个参数是“errors”集合中的一个单错误字符串。@托马斯:谢谢!这正是我想要的。我已经更正了这个示例。RWFP非常好…太棒了!我同意它的可读性较差,比任何东西都奇怪。谢谢!关于可读性-我认为这是一个部分函数应用程序可以使代码变得更好。想象一下,您可以只编写:聚合(…,StringBuilder.AppendFormat(“
  • {0}
  • ”)(尽管这可能在C#中无法很好地工作)