tariq
tariq

Reputation: 2258

Efficient way to join strings with a separator?

foreach (SessionTeacher sessionTeacher in sessionTeachers)
{
   Person person = EMS.PWDAL.DALHelper.GetPersonByID(sessionTeacher.PersonID);
   ltrlSpeakers.Text += person.Name1 + ", ";
}

here ltrlSpeakers.Text will have something like this "abc, def, " that is extra comma and space at the end which I have to remove.

// removing extra comma and space

ltrlSpeakers.Text = ltrlSpeakers.Text.ToString().Remove(ltrlSpeakers.Text.ToString().Length - 2, 2);

it's working fine but is there a better more efficient simple way?

Upvotes: 1

Views: 211

Answers (5)

kaushik
kaushik

Reputation: 70

best way is

ltrlSpeakers.Text = 
        String.Join(", ",
            sessionTeachers
                .Select(teacher => EMS.PWDAL.DALHelper.GetPersonByID(teacher.PersonID).Name1)
                .ToArray()
        );
ltrlSpeakers.Text = ltrlSpeakers.Text.trimend(',')

Upvotes: -1

Stefano Altieri
Stefano Altieri

Reputation: 4628

Try Using LINQ:

string result = string.Join(",",
(from t in sessionTeachers select EMS.PWDAL.DALHelper.GetPersonByID(t.PersonID).Name1))

Upvotes: 3

Ivan Golović
Ivan Golović

Reputation: 8832

Try it like this:

        ltrlSpeakers.Text = 
        String.Join(", ",
            sessionTeachers
                .Select(teacher => EMS.PWDAL.DALHelper.GetPersonByID(teacher.PersonID).Name1)
                .ToArray()
        );

Upvotes: 1

Andrei
Andrei

Reputation: 56716

Something like this:

var personNames = sessionTeachers.Select(
      st => EMS.PWDAL.DALHelper.GetPersonByID(st.PersonID).Name1);
ltrlSpeakers.Text = string.Join(", ", personNames);

Upvotes: 4

ken2k
ken2k

Reputation: 49013

Use the built-in String.Join method instead.

ltrlSpeakers.Text = string.Join(
    ", ", 
    sessionTeachers.Select(z => z.EMS.PWDAL.DALHelper.GetPersonByID(z.PersonID).Name1);

Upvotes: 1

Related Questions