2011-04-04 17 views
30

estoy recibiendo el error anterior en la línea ToList() del código de abajoSystem.Array. no contiene una definición de "ToList"

if (emailReplyTo != null) 
{ 
    System.Collections.Generic.List<String> replyto 
    = emailReplyTo 
    // Strip uneccessary spaces 
    .Replace(", ", ",") 
    .Split(',') 
    .ToList(); 

    request.WithReplyToAddresses(emailReplyTo); 
} 

He incluido using System.Collections; en la parte superior de mi archivo. El marco de destino es 3.5, entonces ¿por qué esto está causando un error?

+1

Si alguien está teniendo el mismo problema, echar un vistazo profundo en 'ventana Output'. Porque la ventana 'Error' a veces puede ser engañosa. – Reddy

Respuesta

87

El método ToList que está buscando es un método de extensión. Trate de añadir este using directiva a la parte superior del archivo:

using System.Linq; 

Al añadir este using Directiva está indicando al compilador que cualquier método de extensión de espacio de nombres que deben ser importados. Es una pena que no haya más ayuda de Visual Studio para la importación de métodos de extensión (ReSharper lo hace bastante bien).

+0

¡Maravilloso, gracias! – fearoffours

+0

Agradable. Estoy un poco sorprendido de que no puedas hacer clic derecho sobre esto en VisualStudio y encontrar una opción de "resolver ...". – micahhoover

6

Esto es simplemente porque ArrayList no expone un método llamado ToList.

Ver this MSDN page para ver una tabla de los miembros disponibles para usted.

Como se explicó por los demás, es posible acceder a este método de extensión mediante la importación de la biblioteca de LINQ:

using System.Linq; 

Además, see this link para una implementación personalizada de los mismos, en caso de que el deseo de implementar uno.

+0

Te refieres a 'Array', no' ArrayList' ... –

+0

@KonradRudolph - Bueno, ahora sí. ;) Podría haber jurado que leí 'ArrayList' en el título, pero no puedo ver ninguna edición, así que debo estar equivocado. –

3

Esto se debe a que los métodos de extensión Enumerable no están disponibles.

es necesario agregar "usando System.Linq"

8

ToList() es un método de extensión. Tal vez se está perdiendo el

using System.Linq; 
8

También puede hacer esto sin .toList, ahorra incluyendo una biblioteca entera sin ninguna razón real.

nueva lista (array)

+0

¡Fue una gran ayuda!Sin embargo, no se olvide de : nueva lista (matriz); – Nate

5

En caso de que alguien se topa con esta pregunta después de googlear ...

tuve el mismo problema exacto en Razor ve y añadiendo using System.Linq en la parte superior no ayudó .

Lo que sí ayudó .Cast() está llamando antes de usar los métodos de extensión LINQ:

myArrayVariable.Cast<SomeClass>().ToList() //ok, NOW ToList works fine 
+0

Mismo problema y solución en el código de prueba de unidad ordinaria dotnet 4.5. No he comprobado por qué. – LosManos

Cuestiones relacionadas