System.Collections.Generic.IEnumerable 'enthält keine Definition für' ToList '


80

Hier ist das Problem. Ich erhalte IEnumerable von ViewPage und als ich versuchte, List zu konvertieren, zeigt es mir Fehler wie:

' System.Collections.Generic.IEnumerable<Pax_Detail>' enthält keine Definition für 'ToList' und es konnte keine Erweiterungsmethode 'ToList' gefunden werden, die ein erstes Argument vom Typ ' System.Collections.Generic.IEnumerable<Pax_Detail>' akzeptiert (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

Hier ist mein Controller-Code:

[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();
}

Ich habe dieselbe Logik auf einen anderen Controller angewendet. Und es funktioniert gut. Ich weiß nicht, welches Problem es hat. Ich habe das Projekt bereits bereinigt, neu erstellt und auch meinen Laptop neu gestartet (obwohl es benötigt wurde).


Haben Sie verwiesen System.Core.dll?
Faultier

7
Vermeiden Sie es = new List<Pax_Detail>()als Randnotiz, wenn Sie es in der nächsten Zeile mit überschreiben pax.ToList(), da nicht verwendeter Speicher auf diese Weise zugewiesen wird
Pascalhein

Antworten:



26

Sie vermissen einen Verweis auf System.Linq.

Hinzufügen

using System.Linq

um Zugriff auf die ToList () - Funktion in der aktuellen Codedatei zu erhalten.


Es Enumerable.ToList<TSource>ist eine Erweiterungsmethode , ein paar Informationen darüber zu geben, warum dies notwendig ist. Erweiterungsmethoden werden außerhalb der ursprünglichen Klasse definiert, auf die sie abzielen. In diesem Fall wird die Erweiterungsmethode im System.LinqNamespace definiert .


7

Eine Alternative zum Hinzufügen von LINQ wäre die Verwendung dieses Codes:

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

Super hilfreich, wenn Sie dies im Sofortfenster versuchen, während Sie eine Datei debuggen, in der die Direktive fehlt.
Dan Field

Wenn ich das versuche, spiegelt sich jede Änderung von pax auch in paxList wider!
Martin

4

Mir fehlte die Referenz zur System.Data.Entity-DLL, und das Problem wurde behoben


0

In meinem Fall hatte ich Code aus einem anderen Projekt kopiert, das Automapper verwendete. Ich brauchte Ewigkeiten, um diesen herauszufinden. Musste nur das Automapper Nuget-Paket zum Projekt hinzufügen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.