2011-07-04 40 views
12

¿Cómo convierto de una variable IEnumerable a una variable int [] en C#?Convierte IEnumerable <int> en int []

+5

utilizar el método .ToArray() Extensión. –

+1

Para el/los infractor (es): para usted puede ser obvio, pero ¿eso merece un DV? Las respuestas a la mayoría de las preguntas son obvias para alguien. – spender

+1

@spender - Como en el programa de juegos del Reino Unido ¿Quién quiere ser millonario? ¡Es solo fácil si sabes la respuesta! No es una mala pregunta, es perfectamente razonable y 5 respuestas dicen que es responsable. Aunque podría calificar para una estafa. –

Respuesta

18

utilizar el método de .ToArray() extensión si usted es capaz de utilizar System.Linq

Si estás en .Net 2, entonces podría acaba de rasgar apagado cómo System.Linq.Enumerable implementa el. ToArray método de extensión (He levantado el código aquí casi literalmente - ¿necesita una Microsoft®?):

struct Buffer<TElement> 
{ 
    internal TElement[] items; 
    internal int count; 
    internal Buffer(IEnumerable<TElement> source) 
    { 
     TElement[] array = null; 
     int num = 0; 
     ICollection<TElement> collection = source as ICollection<TElement>; 
     if (collection != null) 
     { 
      num = collection.Count; 
      if (num > 0) 
      { 
       array = new TElement[num]; 
       collection.CopyTo(array, 0); 
      } 
     } 
     else 
     { 
      foreach (TElement current in source) 
      { 
       if (array == null) 
       { 
        array = new TElement[4]; 
       } 
       else 
       { 
        if (array.Length == num) 
        { 
         TElement[] array2 = new TElement[checked(num * 2)]; 
         Array.Copy(array, 0, array2, 0, num); 
         array = array2; 
        } 
       } 
       array[num] = current; 
       num++; 
      } 
     } 
     this.items = array; 
     this.count = num; 
    } 
    public TElement[] ToArray() 
    { 
     if (this.count == 0) 
     { 
      return new TElement[0]; 
     } 
     if (this.items.Length == this.count) 
     { 
      return this.items; 
     } 
     TElement[] array = new TElement[this.count]; 
     Array.Copy(this.items, 0, array, 0, this.count); 
     return array; 
    } 
} 

Con esto simplemente puede hacer esto:

public int[] ToArray(IEnumerable<int> myEnumerable) 
{ 
    return new Buffer<int>(myEnumerable).ToArray(); 
} 
3
IEnumerable<int> i = new List<int>{1,2,3}; 
var arr = i.ToArray(); 
14

llamada ToArray después de usar una directiva para LINQ:

using System.Linq; 

... 

IEnumerable<int> enumerable = ...; 
int[] array = enumerable.ToArray(); 

Esto requiere .NET 3.5 o superior. Háganos saber si está en .NET 2.0.

1
IEnumerable to int[] - enumerable.Cast<int>().ToArray(); 
IEnumerable<int> to int[] - enumerable.ToArray(); 
1
IEnumerable<int> ints = new List<int>(); 
int[] arrayInts = ints.ToArray(); 

siempre y cuando esté utilizando LINQ :)

Cuestiones relacionadas