2011-02-07 9 views
65

Come convertire un Array in un List<object> in C#?Come si converte una matrice in una lista <object> in C#?

+9

Non vedo cosa c'è di sbagliato in questa domanda .. -5? Veramente? –

+4

+1 perché è una domanda semplice ed efficace per la quale non ho trovato un duplicato su SO. (I downvoters dovrebbero commentare o riconsiderare). Http://stackoverflow.com/questions/1003841/how-do-i-move-the-turtle-in-logo http://blog.stackoverflow.com/2009/06/podcast -58/ – JYelton

+0

Possibile duplicato di [Conversione di System.Array in List] (http://stackoverflow.com/questions/1603170/conversion-of-system-array-to-list) –

risposta

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

Se il tipo degli elementi dell'array è un tipo di riferimento, è possibile lasciare il .Cast<object>() dal C# 4 aggiunto interfaccia covarianza cioè un IEnumerable<SomeClass> possono essere trattati come un IEnumerable<object>.

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

Assicurarsi di utilizzare System. Linq –

+0

Funziona solo in VS2015? Sotto VS2012: "System.Array" non contiene una definizione per "Cast" e non è possibile trovare il metodo di estensione "Cast" che accetta un primo argomento di tipo "System.Array" (manca una direttiva using o un riferimento assembly?) – ajeh

+0

Qual è l'overhead delle prestazioni di questo? Qualunque? –

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[]) dovrebbe fare il trucco. Eviterà ogni sorta di allocazione di memoria inutile. Si potrebbe anche usare LINQ, un po 'come questo: object[].Cast<object>().ToList()

33

utilizzare il costruttore: new List<object>(myArray)

+2

Una cosa bella di questo stile è che crea e restituisce l'elenco, quindi è possibile aggiungere altri metodi (ad esempio '.Conti (nome utente)'). Utile per racchiudere un po 'di logica in una riga se la dichiarazione :). – Patrick

8

La Lista <> costruttore può accettare tutto ciò che implementa IEnumerable, quindi ...

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

un altro modo

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

Ciò consente di inviare un oggetto:

private List<object> ConvertArrayToList(dynamic array) 
3

Se elemento dell'array e voce dell'elenco sono gli stessi

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

Ho dovuto aggiungere usando using System.Linq; per farlo funzionare; non so perché. – user3752281

0

È anche possibile inizializzare la lista con una serie direttamente:

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

Tutto tutti dicono è corretto così,

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

trasforma un array in un elenco, elenco. Tuttavia, la cosa più importante che manca da un sacco di commenti è che è necessario disporre di questi 2 utilizzando istruzioni nella parte superiore della classe

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

Spero che questo aiuta!

Problemi correlati