2010-03-09 9 views
10

Esta pregunta puede parecer trivial y estúpida a primera vista, pero es mucho más que esto..NET convertir matrices simples a genéricos de lista

Tengo una matriz de cualquier tipo T() y quiero convertirlo en una lista genérica (List<T>). ¿Hay alguna otra manera aparte de crear una lista genérica, atravesar toda la matriz y agregar el elemento en la lista?

Situación actual:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(); 
foreach(string s in strList) 
{ 
    listOfStr.Add(s); 
} 

Mi situación ideal: a

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = strList.ToList<string>(); 

O:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(strList); 

Soy suggestin g los últimos 2 nombres de método, ya que creo que el compilador o CLR pueden realizar algunas optimizaciones en todas las operaciones si lo desea.

P.S .: No estoy hablando acerca de la Array o ArrayList Tipo

Respuesta

23

Si entiendo su pregunta correctamente, funcionará uno de los segmentos de código que tenga. En C#, la cadena debe estar entre comillas dobles, no solo.

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(strList); 
+0

Sí, hago esto todo el tiempo ... bueno, a veces. –

+0

Perdón por el error de la cita. Lo arreglé ahora. –

+0

Esto no necesita LINQ y es la técnica más simple. – softveda

10

Si hace referencia a System.Linq, puede escribir:

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 

exactamente como usted desea.

La segunda sintaxis también debería funcionar.

4

Uso:

using System.Linq; 

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 
4
object[] array = new object[10]; 
List<object> list = array.ToList(); 

Método ToList es el método de LINQ. Debe agregar

using System.Linq; 
1

¿Realmente necesita una Lista o un IList trabaja para usted? Debido a que el CLR (tiene un código especial para) admite la transmisión de matrices a interfaces de colección genéricas, simplemente:

string[] strList = {"foo","bar","meh"}; 
IList<string> listOfStr = (IList<string>)strList; 
Cuestiones relacionadas