The simplest way to convert an array to a list is with the ToList() Linq method:
using System.Linq;
var array = new int[]
{
1,2,3,4,5
};
var list = array.ToList();
Console.WriteLine(string.Join(",", list));
Code language: C# (cs)
This outputs the following:
1,2,3,4,5
Code language: plaintext (plaintext)
Besides using ToList(), you can also use the list constructor or AddRange(). Before I show those, I’ll explain why you’d want to use these special methods instead of just adding items individually to a new list.
Don’t add items to the list individually
You may be wondering, why not just loop through the array and add items to a list one at a time? Simply put, a List in .NET has an internal array, which stores data in a contiguous block in memory. Because of this, you can copy chunks of memory from one array to another, which is way more efficient than copying individual items one at a time. That’s what ToList() does behind the scenes, it uses Array.Copy() to efficiently copy data from an array to its internal array.
Use the List<T>(array) constructor
You can convert an array to a list by using the List<T>(array) constructor:
var array = new int[]
{
1,2,3,4,5
};
var list = new List<int>(array);
Console.WriteLine(string.Join(",", list)); //outputs 1,2,3,4,5
Code language: C# (cs)
This outputs the following:
1,2,3,4,5
Code language: plaintext (plaintext)
Copy array to an existing list with List.AddRange()
If the list already exists, you can use List.AddRange() to copy the array to the end of the list:
var list = new List<int>()
{
1,2,3
};
var array = new int[]
{
4,5,6
};
list.AddRange(array);
Console.WriteLine(string.Join(",", list));
Code language: C# (cs)
This outputs the following (notice how the array’s elements 4,5,6 are appended to end of the list):
1,2,3,4,5,6
Code language: plaintext (plaintext)
Internally, List.AddRange() uses Array.Copy() to copy the array to the end of the list’s internal array (resizing it if necessary).