Подтвердить что ты не робот

Преобразование из списка <T> в массив T []

Есть ли короткий способ преобразования строго типизированного List<T> в массив того же типа, например: List<MyClass> to MyClass[]?

Короче говоря, я имею в виду один вызов метода или, по крайней мере, короче:

MyClass[] myArray = new MyClass[list.Count];
int i = 0;
foreach (MyClass myClass in list)
{
    myArray[i++] = myClass;
}
4b9b3361

Ответ 1

Попробуйте использовать

MyClass[] myArray = list.ToArray();

Ответ 2

List<int> list = new List<int>();
int[] intList = list.ToArray();

это ваше решение?

Ответ 3

Используйте ToArray() в List<T>.

Ответ 4

list.ToArray()

Будет делать трюк. Подробнее см. здесь.

Ответ 5

Вы можете просто использовать ToArray() расширения ToArray()

Пример:

Person p1 = new Person() { Name = "Person 1", Age = 27 };
Person p2 = new Person() { Name = "Person 2", Age = 31 };

List<Person> people = new List<Person> { p1, p2 };

var array = people.ToArray();

Согласно Документам

Элементы копируются с помощью Array.Copy(), который является операцией O (n), где n - это Count.

Ответ 6

Чтобы использовать вдвое быстрее, используя несколько процессорных ядер, пакет HPCsharp nuget предоставляет:

list.ToArrayPar();

Ответ 7

Одно из возможных решений, которое следует избегать: использование нескольких ядер ЦП и ожидается, что оно будет работать быстрее, но работает примерно в 5 раз медленнее:

list.AsParallel().ToArray();