2011-02-07 10 views
65

¿Cómo convierto un Array a un List<object> en C#?¿Cómo convierto una matriz a una lista <object> en C#?

+9

No veo qué pasa con esta pregunta .. -5? De Verdad? –

+4

+1 porque es una pregunta simple y efectiva para la que no encontré un duplicado en SO. (Los Downvoters deberían comentar o reconsiderar). Http://stackoverflow.com/questions/1003841/how-do-i-move-the-turtle-in-logo http://blog.stackoverflow.com/2009/06/podcast -58/ – JYelton

+0

Posible duplicado de [Conversión de System.Array en List] (http://stackoverflow.com/questions/1603170/conversion-of-system-array-to-list) –

Respuesta

89
List<object> list = myArray.Cast<Object>().ToList(); 

Si el tipo de los elementos de la matriz es un tipo de referencia, se puede dejar de lado el .Cast<object>() desde C# 4 añadió interfaz de co-varianza es decir, un IEnumerable<SomeClass> pueden ser tratados como un IEnumerable<object>.

List<object> list = myArray.ToList<object>(); 
+28

Asegúrese de estar utilizando el sistema. Linq –

+0

¿Esto solo funciona en VS2015? En VS2012: 'System.Array' no contiene una definición para 'Cast' y no se puede encontrar ningún método de extensión 'Cast' que acepte un primer argumento de tipo 'System.Array' (¿falta una directiva using o una referencia de ensamblado?) – ajeh

+0

¿Cuál es la sobrecarga de rendimiento al hacer esto? ¿Alguna? –

4
private List<object> ConvertArrayToList(object[] array) 
{ 
    List<object> list = new List<object>(); 

    foreach(object obj in array) 
    list.add(obj); 

    return list; 
} 
12

List<object>.AddRange(object[]) debe hacer el truco. Evitará todo tipo de asignación de memoria inútil. También es posible usar LINQ, algo como esto: object[].Cast<object>().ToList()

33

utilizar el constructor: new List<object>(myArray)

+2

Una cosa buena de este estilo es que crea y devuelve la lista, por lo que puede agregar más métodos (por ejemplo, '.Contains (userName)'). Útil para meter un montón de lógica en una sentencia if de una línea :). – Patrick

8

La Lista <> constructor puede aceptar cualquier cosa que implementa IEnumerable, por lo tanto ...

 object[] testArray = new object[] { "blah", "blah2" }; 
     List<object> testList = new List<object>(testArray); 
0

otra manera

List<YourClass> list = (arrayList.ToArray() as YourClass[]).ToList(); 
0

Esto permitirá enviar un objeto:

private List<object> ConvertArrayToList(dynamic array) 
3

Si el artículo matriz y elemento de la lista son los mismos

List<object> list=myArray.ToList(); 
+0

Tuve que agregar usando System.Linq; para que funcione; no estoy seguro de por qué. – user3752281

0

También puede inicializar la lista con una matriz directamente:

List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9}); 
1

Todo lo que todos dicen es correcto así,

int[] aArray = {1,2,3}; 
List<int> list = aArray.OfType<int>().ToList(); 

convertiría aArray en una lista. Sin embargo lo más grande que le falta a muchos de los comentarios es que es necesario tener estos 2 mediante instrucciones en la parte superior de su clase

using System.Collections.Generic; 
using System.Linq; 

espero que esto ayude!

Cuestiones relacionadas