System.Collections.Generic.IEnumerable 'no contiene ninguna definición para' ToList '


80

Aqui esta el problema. Obtengo IEnumerable de ViewPage y cuando lo intenté para convertir la lista, me muestra un error como:

' System.Collections.Generic.IEnumerable<Pax_Detail>' no contiene una definición para 'ToList' y no se System.Collections.Generic.IEnumerable<Pax_Detail>pudo encontrar ningún método de extensión 'ToList' que acepte un primer argumento de tipo ' ' (¿le falta una directiva using o una referencia de ensamblado?)

Aquí está mi código de controlador:

[HttpPost]
public ActionResult Edit_Booking(Booking model, IEnumerable<Pax_Detail> pax)
{
  List<Pax_Detail> paxList = new List<Pax_Detail>();
  paxList = pax.ToList(); //getting error here
  BookingDL.Update_Booking(model, paxList);
  return View();
}

He aplicado la misma lógica en otro controlador. Y está funcionando bien. No sé qué problema tiene. Ya limpié, reconstruí el proyecto y también reinicié mi computadora portátil (aunque era necesario).


¿Ha hecho referencia System.Core.dll?
— perezoso

7
como nota al margen, evite = new List<Pax_Detail>()al sobrescribirlo en la siguiente línea con pax.ToList(), porque la memoria no utilizada se asigna de esta manera
— pascalhein

Respuestas:



26

Falta una referencia a System.Linq.

Añadir

using System.Linq

para obtener acceso a la función ToList () en el archivo de código actual.


Dar un poco de información sobre por qué esto es necesario, Enumerable.ToList<TSource>es un método de extensión. Los métodos de extensión se definen fuera de la clase original a la que apunta. En este caso, el método de extensión se define en el System.Linqespacio de nombres.


7

Una alternativa a agregar LINQ sería usar este código en su lugar:

List<Pax_Detail> paxList = new List<Pax_Detail>(pax);

Muy útil si está intentando hacer esto en la ventana Inmediato mientras depura un archivo al que le falta la directiva.
— Dan Field

¡Cuando intento esto, cualquier cambio en pax también se refleja en paxList!
— Martin

4

Me faltaba la referencia de dll System.Data.Entity y el problema se resolvió


0

En mi caso, había copiado un código de otro proyecto que usaba Automapper; me llevó años resolverlo. Solo tuve que agregar el paquete automapper nuget al proyecto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.