Агрегатная функция Linq, как создать строку CSV - PullRequest
7 голосов
/ 13 сентября 2010

Я бы хотел создать строку значений, разделенных запятыми, с помощью функции Aggregate Линка. Кто-нибудь знает, как это сделать?

Учитывая массив строк, как это:

var authors = new string[] {"author 1", "author 2", "author 3"};

Как получить такую ​​строку, как эта автор 1, автор 2, автор 3 ? Я думаю, что-то вроде authors.Aggregate(author => author + ",") может сделать это, но не уверен.

Идеи

Ответы [ 2 ]

12 голосов
/ 13 сентября 2010

Если вы хотите разделить их запятыми, просто используйте string.Join:

string.Join(", ", authors);

Это будет работать с любым IEnumerable (по крайней мере, в .NET 4.0), но имеетработал с массивами строк с 1.0.

6 голосов
/ 13 сентября 2010

Как говорит Беннор Маккарти, вам будет гораздо лучше использовать string.Join для этой цели. Если вы действительно хотите использовать Enumerable.Aggregate, это должно сделать:

string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author);

Это примерно эквивалентно:

string csvString = authors.First();

foreach (string author in authors.Skip(1))
{
    csvString += ", " + author;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...