2013-03-01 4 views
2
foreach (SessionTeacher sessionTeacher in sessionTeachers) 
{ 
    Person person = EMS.PWDAL.DALHelper.GetPersonByID(sessionTeacher.PersonID); 
    ltrlSpeakers.Text += person.Name1 + ", "; 
} 

здесь ltrlSpeakers.Text будет иметь что-то вроде этого «abc, def», это дополнительная запятая и пробел в конце, которые я должен удалить.Является ли это эффективным?

// removing extra comma and space 

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

его рабочий тон, но есть ли более эффективный простой способ?

+1

Действительно ли это одна из наименее эффективных частей вашего приложения? Меня больше беспокоит то, что вы используете [магические числа] (http://stackoverflow.com/q/47882/299327). –

+0

@RyanGates, какие? – tariq

+0

'ltrlSpeakers.Text.ToString(). Длина - 2, 2'' '' '' '' '' –

ответ

3

Что-то вроде этого:

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

Вместо этого используйте встроенный метод String.Join.

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

Попробуйте с помощью LINQ:

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

Я считаю, что вызов ToArray() не требуется. – Trevor

+0

@Trevor вы правы ... –

+0

Вызов 'ToArray' необходим для всех версий .NET до 4, поэтому этот вызов может понадобиться d (http://stackoverflow.com/questions/10092815/why-is-toarray -подержанная-при-использование строка-нарисуйте с-liststring). –

1

Попробуйте так:

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

лучший способ ltrlSpeakers.Text = String.Join (",", sessionTeachers .Выбрать (учитель => EMS.PWDAL.DALHelper.GetPersonByID (преподаватель.PersonID) .Name1) .ToArray() ); ltrlSpeakers.Text = ltrlSpeakers.Text.trimend (',')

Смежные вопросы