2010-08-23 22 views
6

Tengo una lista y necesito un IEnumerable, sin embargo List.GetEnumerator() devuelve List.Enumerator ...Cómo obtener IEnumerable <T> de la lista <T>?

¿Hay una manera sencilla de conseguir (fundición a?) Un IEnumerator? (Actualmente He resuelto esto con un bucle, sin embargo me siento fundición del empadronador sería una solución mucho mejor) ...

+5

'List ' ya implementa 'IEnumerable ' Entonces, ¿qué estás tratando de hacer? –

+0

¿Quiere decir 'IEnumerator '? –

+0

Posiblemente relacionado, aunque no demasiado probable: http://msmvps.com/blogs/jon_skeet/archive/2010/07/27/iterate-damn-you.aspx – Kobi

Respuesta

15

Un List<T> es ya un IEnumerable<T>.

+2

No olvide tener 'using System.Linq' en la parte superior de su archivo para poder usar' List 'como' IEnumerable '. –

+1

@Lukas Cenovsky: Estás equivocado, solo necesitas eso para los métodos de extensión. – leppie

+0

Tienes razón. Mi punto es que cuando necesito 'IEnumerable ', lo necesito principalmente debido a sus métodos de extensión y a veces me olvido de incluir 'using System.Linq'. –

3

Se va a convertir de forma implícita, por lo IEnumerable<MyType> foo = myList;

+2

No se produce ninguna conversión, ya que es/implementa IEnumerable , no moldeable a. – Dykam

4

Creo que encontrará que una Lista genérica implementa IEnumerable, por lo que no necesita hacer nada.

¿En qué situación estás tratando de usar esto?

3

List<T> implementa IEnumerable<T>, por lo que no es necesario para su emisión:

public IEnumerable<T> GetIEnumerable() 
{ 
    List<T> yourListOfT = GetList(); 
    return yourListOfT; 
} 
2

Una lista implementa IEnumerable tan sólo tiene que utilizar su lista.

Cuestiones relacionadas