StringBuilder не работает, когда он находится в цикле ForEach - PullRequest
0 голосов
/ 02 января 2019

Здесь у меня есть несколько имен, но имя не является обязательным для 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 +                   
                };

Пожалуйста, дайте мне подсказку для соответствующего решения этой проблемы

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вы должны будете объявить строителя строк снаружи для каждого цикла. также тело сообщения должно быть сгенерировано после цикла 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();                  
};
0 голосов
/ 02 января 2019

вы создаете новый строитель строк (sb, abc) в каждом цикле, но вы хотите, чтобы только один строитель строк, к которому что-то добавлялось в каждом цикле, создает строители строк вне цикла:

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 +                   
                    };
...