1
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?

Cœur
  • 37,241
  • 25
  • 195
  • 267
tariq
  • 2,193
  • 15
  • 26

5 Answers5

4

Something like this:

var personNames = sessionTeachers.Select(
      st => EMS.PWDAL.DALHelper.GetPersonByID(st.PersonID).Name1);
ltrlSpeakers.Text = string.Join(", ", personNames);
Andrei
  • 55,890
  • 9
  • 87
  • 108
3

Try Using LINQ:

string result = string.Join(",",
(from t in sessionTeachers select EMS.PWDAL.DALHelper.GetPersonByID(t.PersonID).Name1))
Stefano Altieri
  • 4,550
  • 1
  • 24
  • 41
  • I believe the call to ToArray() is not required. – Trevor Tubbs Mar 01 '13 at 12:42
  • Call to `ToArray` is required for all .NET versions before 4, so this call might be necessary d(http://stackoverflow.com/questions/10092815/why-is-toarray-used-when-using-string-join-with-a-liststring). – Ivan Golović Mar 01 '13 at 13:04
1

Use the built-in String.Join method instead.

ltrlSpeakers.Text = string.Join(
    ", ", 
    sessionTeachers.Select(z => z.EMS.PWDAL.DALHelper.GetPersonByID(z.PersonID).Name1);
ken2k
  • 48,145
  • 10
  • 116
  • 176
1

Try it like this:

        ltrlSpeakers.Text = 
        String.Join(", ",
            sessionTeachers
                .Select(teacher => EMS.PWDAL.DALHelper.GetPersonByID(teacher.PersonID).Name1)
                .ToArray()
        );
Ivan Golović
  • 8,732
  • 3
  • 25
  • 31
-1

best way is

ltrlSpeakers.Text = 
        String.Join(", ",
            sessionTeachers
                .Select(teacher => EMS.PWDAL.DALHelper.GetPersonByID(teacher.PersonID).Name1)
                .ToArray()
        );
ltrlSpeakers.Text = ltrlSpeakers.Text.trimend(',')
Cœur
  • 37,241
  • 25
  • 195
  • 267
kaushik
  • 70
  • 5