C# Converting List<int> to List<double>
You can use Select
as suggested by others, but you can also use ConvertAll
:
List<double> doubleList = intList.ConvertAll(x => (double)x);
This has two advantages:
- It doesn't require LINQ, so if you're using .NET 2.0 and don't want to use LINQBridge, you can still use it.
- It's more efficient: the
ToList
method doesn't know the size of the result ofSelect
, so it may need to reallocate buffers as it goes.ConvertAll
knows the source and destination size, so it can do it all in one go. It can also do so without the abstraction of iterators.
The disadvantages:
- It only works with
List<T>
and arrays. If you get a plainIEnumerable<T>
you'll have to useSelect
andToList
. - If you're using LINQ heavily in your project, it may be more consistent to keep using it here as well.
You can use LINQ methods:
List<double> doubles = integers.Select<int, double>(i => i).ToList();
or:
List<double> doubles = integers.Select(i => (double)i).ToList();
Also, the list class has a ForEach method:
List<double> doubles = new List<double>(integers.Count);
integers.ForEach(i => doubles.Add(i));
You could do this using the Select extension method:
List<double> doubleList = intList.Select(x => (double)x).ToList();