Подтвердить что ты не робот

Как присоединиться к общему списку объектов по определенному свойству

 class Person
 {
 public string FirstName { get; set; }
 public string LastName { get; set; }
 }

 List<Person> theList = populate it with a list of Person objects

Как я могу получить строку, которая содержит все FirstName из объектов в списке, разделенных запятой. Например: Джон, Питер, Джек

Базовым решением было бы итерацию по каждому объекту, но я уверен, что есть однострочное решение.

Спасибо.

4b9b3361

Ответ 1

Обновление (с .NET 4) string.Join теперь имеет перегрузку, которая принимает IEnumerable<string> - yay!

string.Join(",", theList.Select(p => p.FirstName));

Для версий .NET ниже 4.0 (старше):

string.Join(",", theList.ConvertAll(person => person.FirstName).ToArray());

Разделите его на составные части:

List<T>.ConvertAll преобразует a List<T> в другой тип - в этом случае a List<string>.

ToArray() преобразует List<string> в string[].

string.Join() записывает массив строк (второй параметр) как одну строку, разделенную первым параметром.

Ответ 2

Вы также можете использовать метод расширения запроса

string output = theList.Select(p => p.FirstName).Aggregate((progress, next) => progress + ", " + next);

Это позволит избежать создания массива.