tags:

views:

202

answers:

2

Hi folks,

i have the an IList and i wish to turn it into a ToArray() string result. Currently i have to do the following :(

List<string> values = new List<string>();
foreach(var value in numberList)
{
    values.Add(value.ToString());    
}

...

string blah = string.Join(",", values.ToArray());

i was hoping to remove the foreach and replace it with some FunkyColdMedina linq code.

Cheers!

+7  A: 
values.Select(v => v.ToString()).ToArray();

or the one liner

string blah = string.Join(",", values.Select(v => v.ToString()).ToArray());
wekempf
ha - too easy :) cheers mate!
Pure.Krome
A: 

For those reading this question that aren't using LINQ (i.e. if you're not on .NET 3.x) there's a slightly more complicated method. They key being that if you create a List you have access to List.ToArray():

IList<int> numberList = new List<int> {1, 2, 3, 4, 5};

int[] intArray = new List<int>(numberList).ToArray();

string blah = string.Join(",", Array.ConvertAll(intArray, input => input.ToString()));

Not very efficient because you're then creating the input data, a List, an int array, and a string array, just to get the joined string. Without .NET 3.x your iterator method is probably best.

Neil Barnwell