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 of Select, 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 plain IEnumerable<T> you'll have to use Select and ToList.
  • 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();

Tags:

C#

Generics