System.Collections.Generic.IEnumerable ”nie zawiera żadnej definicji„ ToList ”


80

Tu jest problem. Otrzymuję IEnumerable z ViewPage i kiedy próbowałem przekonwertować Listę, pokazuje mi błąd taki jak:

System.Collections.Generic.IEnumerable<Pax_Detail>” nie zawiera definicji „ToList” i nie można znaleźć metody rozszerzającej „ToList” akceptującej pierwszy argument typu „ System.Collections.Generic.IEnumerable<Pax_Detail>” (brakuje dyrektywy using lub odwołania do zestawu?)

Oto mój kod kontrolera:

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

Zastosowałem tę samą logikę na innym kontrolerze. I działa dobrze. Nie wiem, jaki ma problem. Wyczyściłem, przebudowałem projekt i zrestartowałem laptopa (choć było to potrzebne).


Czy odwoływałeś się System.Core.dll?
lenistwo

7
na marginesie, unikaj = new List<Pax_Detail>()nadpisywania go w następnej linii pax.ToList(), ponieważ w ten sposób alokowana jest nieużywana pamięć
pascalhein

Odpowiedzi:



26

Brakuje odniesienia do System.Linq.

Dodaj

using System.Linq

aby uzyskać dostęp do funkcji ToList () w bieżącym pliku kodu.


Podanie trochę informacji o tym, dlaczego jest to konieczne, Enumerable.ToList<TSource>jest metodą rozszerzającą. Metody rozszerzające są zdefiniowane poza oryginalną klasą, do której są przeznaczone. W tym przypadku metoda rozszerzenia jest zdefiniowana w System.Linqprzestrzeni nazw.


7

Alternatywą dla dodania LINQ byłoby użycie tego kodu:

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

Bardzo przydatne, jeśli próbujesz to zrobić w oknie bezpośrednim podczas debugowania pliku, w którym brakuje dyrektywy.
Dan Field

Kiedy próbuję tego, każda zmiana w pax jest również odzwierciedlana w paxList!
Martin,


0

W moim przypadku skopiowałem kod z innego projektu, który korzystał z Automappera - przepracowanie tego zajęło mi wieki. Wystarczyło dodać pakiet automapper nuget do projektu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.