Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of strings to one string

Lets say you have a:

List<string> los = new List<string>();

In this crazy functional world we live in these days which one of these would be best for creating one string by concatenating these:

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

or Plain old StringBuilder foreach

OR is there a better way?

like image 327
maxfridbe Avatar asked Nov 25 '08 20:11

maxfridbe


4 Answers

I would go with option A:

String.Join(String.Empty, los.ToArray());

My reasoning is because the Join method was written for that purpose. In fact if you look at Reflector, you'll see that unsafe code was used to really optimize it. The other two also WORK, but I think the Join function was written for this purpose, and I would guess, the most efficient. I could be wrong though...

As per @Nuri YILMAZ without .ToArray(), but this is .NET 4+:

String.Join(String.Empty, los);
like image 73
BFree Avatar answered Oct 13 '22 05:10

BFree


string.Concat(los.ToArray());

If you just want to concatenate the strings then use string.Concat() instead of string.Join().

like image 34
Pent Ploompuu Avatar answered Oct 13 '22 06:10

Pent Ploompuu


If you use .net 4.0 you can use a sorter way:

String.Join<string>(String.Empty, los);
like image 19
mnieto Avatar answered Oct 13 '22 05:10

mnieto


String.Join() is implemented quite fast, and as you already have a collection of the strings in question, is probably the best choice. Above all, it shouts "I'm joining a list of strings!" Always nice.

like image 10
J Cooper Avatar answered Oct 13 '22 04:10

J Cooper