2009-12-17 12 views
6

tengo lista de de GuidCómo copiar la Lista de matriz

List<Guid> MyList; 

necesito para copiar su contenido a la matriz

Guid[] 

favor me recomiendan una solución bastante

+0

Otra pregunta, MiClase { Valor de guía; } Lista Copiar la propiedad Guid a una matriz de Guid's? Me refiero a no utilizar la declaración de iteración –

+1

No estoy al 100% en la etiqueta SO, pero podría ser mejor hacer una nueva pregunta como una nueva pregunta. Podría estar equivocado. –

Respuesta

22

Como Luke dijo en comentarios, el tipo particular List<T> ya tiene un método ToArray(). Pero si usted está usando C# 3.0, puede aprovechar el método ToArray() extensión en cualquier IEnumerable ejemplo (que incluye IList, IList<T>, colecciones, otras matrices, etc.)

var myList = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()}; 
Guid[] array = myList.ToArray(); // instance method 

IList<Guid> myList2 = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()}; 
Guid[] array2 = myList2.ToArray(); // extension method 

var myList3 = new Collection<Guid> {Guid.NewGuid(), Guid.NewGuid()}; 
Guid[] array3 = myList3.ToArray(); // extension method 

En cuanto a su segunda pregunta:

Usted puede utilizar el método Select para llevar a cabo la proyección necesaria:

var list = new List<MyClass> {new MyClass(), new MyClass()}; 
Guid[] array = list.Select(mc => mc.value).ToArray(); 
+0

Muchas gracias. –

+5

'List ' tiene su propio (es decir, no es una extensión) método 'ToArray', disponible desde .NET2. (Exactamente la misma sintaxis que la anterior, aunque no podría usar 'var' o inicializadores de objetos sin C# 3.) – LukeH

+0

@Luke: ¡Muy buen punto! Actualicé mi respuesta en consecuencia. Gracias. –

10

Sólo debería tener que llamar MyList.ToArray() para obtener una matriz de los elementos.

3

Utilizando el Enumerable.ToArray() Extension Method que puede hacer:

var guidArray = MyList.ToArray(); 

Si usted todavía está utilizando C# 2.0 se puede utilizar el método List.ToArray. La sintaxis es la misma (excepto que no hay una palabra clave var en C# 2.0).

5

La nueva forma (usando extensiones o el método ToArray() en las listas genéricos en .Net 2.0):

Guid[] guidArray = MyList.ToArray(); 

La forma antigua:

Guid[] guidArray = new guidArray[MyList.Length]; 
int idx = 0; 
foreach (var guid in MyList) 
{ 
    guidArray[idx++] = guid; 
} 
+3

C# 2.0 tiene 'List.ToArray', que usa' System.Array.Copy' –

+1

Supongo que estoy mostrando mi edad. :-) – tvanfosson

4

Sin embargo, otra opción, además de Guid[] MyArray = MyList.ToArray():

Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from 
MyList.CopyTo(MyArray, 0); 

Esta solución podría ser mejor si, por cualquier razón, usted ya tiene un properly- array de tamaño y simplemente desea llenarlo (en lugar de construir uno nuevo, como lo hace List<T>.ToArray()).

Cuestiones relacionadas