115 votes

System.Collections.Generic.IEnumerable' ne contient pas de définition pour 'ToList'.

Voici le problème. J'obtiens IEnumerable à partir de ViewPage et quand j'ai essayé de convertir la liste, j'obtiens une erreur du genre :

' System.Collections.Generic.IEnumerable<Pax_Detail> ne contient pas une définition pour 'ToList' et aucune méthode d'extension 'ToList' acceptant un premier argument de type ' System.Collections.Generic.IEnumerable<Pax_Detail> On peut trouver (il vous manque une directive using ou une référence à l'assemblage ?)

Voici le code de mon contrôleur :

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

J'ai appliqué la même logique sur un autre contrôleur. Et cela fonctionne bien. Je ne sais pas quel est le problème. J'ai déjà nettoyé, reconstruit le projet et redémarré mon ordinateur portable (même si c'était nécessaire).

283voto

Anthony Sottile Points 3629

Il vous manque une directive d'utilisation pour System.Linq ?

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.tolist

39voto

Adrian Godong Points 5367

Il vous manque une référence à System.Linq.

Ajouter

using System.Linq

pour accéder à la fonction ToList() du fichier de code courant.


Pour donner un peu d'information sur la raison pour laquelle cela est nécessaire, Enumerable.ToList<TSource> est une méthode d'extension. Les méthodes d'extension sont définies en dehors de la classe originale qu'elles ciblent. Dans ce cas, la méthode d'extension est définie sur System.Linq espace de noms.

10voto

Daniel Hilgarth Points 90722

Une alternative à l'ajout de LINQ serait d'utiliser ce code à la place :

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

4voto

Denis Besic Points 756

Il me manquait la référence à la dll System.Data.Entity et le problème était résolu.

0voto

Myke Black Points 318

Dans mon cas, j'avais copié du code d'un autre projet qui utilisait Automapper - il m'a fallu du temps pour le comprendre. J'ai juste dû ajouter le paquet nuget d'Automapper au projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X