Это сделает работу за вас:
var res = yourList.Select(x => x.Name).Aggregate((current, next) => current + ", " + next);
Но я рекомендую вам использовать String.Join(string separator, IEnumerable<string> values)
:
var res = String.Join(", ", yourList.Select(x => x.Name));
Дополнительные данные:
Сказать правду в в таких ситуациях вы можете использовать либо Aggregate
, либо String.Join()
. Если мы проверим время выполнения обоих запросов, мы увидим, что второе быстрее первого. Но причина не в Aggregate()
функции. Проблема в том, что мы конкатенируем строки в цикле. Это вызовет массу промежуточных строк, что приведет к отрицательному результату . Вы можете использовать StringBuilder.Append
, если вы хотите по-прежнему использовать Aggregate
и увеличить производительность:
var res = yourList.Select(x => x.Name)
.Aggregate(new StringBuilder(), (current, next) => current.Append(next).Append(", ")).ToString();
Но String.Join()
использует StringBuilder
внутренне уже и по этой причине он будет самым лучшим выбором.
использование '.select (х => x.Name)' или 'string.Join'. –
Сделайте то же самое, что и связанный с ним вопрос, текущий и следующий - это объекты 'Person' вместо строк. –
@CraigW .: он не работает, я уже пробовал. Я бы запретил любому, кто ниспослал его без каких-либо усилий. – Revious