StringBuilder 在 ForEach 循环下不工作

StringBuilder Is not working When its under ForEach loop

这里我有一些名字但是名字没有绑定到 String Builder

var x=from n in d.Employee
 Where n.EmpId==10
select n

 foreach (var master in x)
            {
                StringBuilder sb = new StringBuilder();
                StringBuilder abc = new StringBuilder();
                sb.Append(master.CANDIDATE_NAME + ",";
                abc.Append(sb);
                join_Body = new HrEmailsender()
                {
     Body = "Hi," + abc +                   
                };

请给我解决此问题的提示

您正在每个循环中创建一个新的 stringbuilder (sb, abc),但您只需要一个 stringbuilder,在每个循环中添加一些东西,在循环外创建 stringbuilder:

var x=from n in d.Employee
     Where n.EmpId==10
    select n

                    StringBuilder sb = new StringBuilder();
                    StringBuilder abc = new StringBuilder();

     foreach (var master in x)
                {

                    sb.Append(master.CANDIDATE_NAME + ",");
                    abc.Append(sb);
                    join_Body = new HrEmailsender()
                    {
         Body = "Hi," + abc +                   
                    };

您必须为每个循环在外部声明字符串生成器。 还应在 foreach 循环之后生成消息正文,以便包含所有名称。

var x=from n in d.Employee
      Where n.EmpId==10
      select n

StringBuilder sb = new StringBuilder();
StringBuilder abc = new StringBuilder();

foreach (var master in x)
{
    sb.Append(master.CANDIDATE_NAME + ",");
    abc.Append(sb);

}
join_Body = new HrEmailsender()
{
    Body = "Hi," + abc.ToString();                  
};