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.