Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linq's Aggregate Function, How to make a CSV String

I'd like to make a comma seperated value string with Linq's Aggregate function. Anyone know how to do this?

Given an array of strings like this:

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

How do I get a single string like this author 1, author 2, author 3? I'm thinking something like authors.Aggregate(author => author + ",") might be able to do this but not sure.

Ideas?

like image 991
Paul Fryer Avatar asked Sep 12 '10 22:09

Paul Fryer


2 Answers

If you're only looking to comma-separate them, just use string.Join:

string.Join(", ", authors);

This will work with any IEnumerable<string> (at least in .NET 4.0), but has worked with arrays of strings since 1.0.

like image 84
Bennor McCarthy Avatar answered Nov 02 '22 05:11

Bennor McCarthy


As Bennor McCarthy says, you'd be much better off using string.Join for this purpose. If you really do want to use Enumerable.Aggregate though, this should do:

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

This is roughly equivalent to:

string csvString = authors.First();

foreach (string author in authors.Skip(1))
{
    csvString += ", " + author;
}
like image 44
Ani Avatar answered Nov 02 '22 07:11

Ani