Ця відповідь показує використання LINQ ( Aggregate
), як вимагається у запитанні, і не призначене для щоденного використання. Оскільки це не використовується, StringBuilder
воно матиме жахливі показники для дуже довгих послідовностей. Для регулярного використання коду, String.Join
як показано в іншій відповіді
Використовуйте такі сукупні запити:
string[] words = { "one", "two", "three" };
var res = words.Aggregate(
"", // start with empty string to handle empty list case.
(current, next) => current + ", " + next);
Console.WriteLine(res);
Це виводи:
, один два три
Сукупність - це функція, яка приймає набір значень і повертає скалярне значення. Приклади T-SQL включають min, max та суму. І VB, і C # підтримують агрегати. І VB, і C # підтримують агрегати як методи розширення. Використовуючи точкову нотацію, просто викликається метод на IEnumerable об'єкті .
Пам'ятайте, що сукупні запити виконуються негайно.
Додаткова інформація - MSDN: Сукупні запити
Якщо ви дійсно хочете Aggregate
використовувати варіант використання, використовуючи StringBuilder
запропонований у коментарі CodeMonkeyKing, який буде приблизно таким же кодом, як і звичайний, String.Join
включаючи хороші показники для великої кількості об'єктів:
var res = words.Aggregate(
new StringBuilder(),
(current, next) => current.Append(current.Length == 0? "" : ", ").Append(next))
.ToString();