System.Collections.Generic.IEnumerable '에'ToList '에 대한 정의가 없습니다.


80

여기에 문제가 있습니다. ViewPage에서 IEnumerable을 얻고 있으며 List를 변환하려고 할 때 다음과 같은 오류가 표시됩니다.

' System.Collections.Generic.IEnumerable<Pax_Detail>'에 'ToList'에 대한 정의가 포함되어 있지 않으며 ' System.Collections.Generic.IEnumerable<Pax_Detail>' 유형의 첫 번째 인수를 허용하는 확장 메서드 'ToList'를 찾을 수 없습니다 (using 지시문 또는 어셈블리 참조가 누락 되었습니까?).

내 컨트롤러 코드는 다음과 같습니다.

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

다른 컨트롤러에 동일한 논리를 적용했습니다. 그리고 그것은 잘 작동합니다. 나는 그것이 어떤 문제를 가지고 있는지 모른다. 나는 이미 프로젝트를 청소하고 다시 빌드하고 랩톱을 다시 시작했습니다 (필요했지만).


당신은 참조 했습니까 System.Core.dll?
Sloth

7
참고로, 사용하지 않은 메모리는 이런 식으로 할당되기 때문에 = new List<Pax_Detail>()다음 줄에서 덮어 쓸 때 피하십시오pax.ToList()
pascalhein 2013-04-04

답변:



26

System.Linq에 대한 참조가 없습니다.

더하다

using System.Linq

현재 코드 파일에서 ToList () 함수에 액세스하려면


이것이 왜 필요한지에 대한 약간의 정보를 제공하는 Enumerable.ToList<TSource>것은 확장 방법입니다. 확장 메서드는 대상이되는 원래 클래스 외부에서 정의됩니다. 이 경우 확장 메서드는 System.Linq네임 스페이스에 정의됩니다 .


7

LINQ를 추가하는 대안은 다음 코드를 대신 사용하는 것입니다.

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

지시문이 누락 된 파일을 디버깅하는 동안 직접 실행 창에서이 작업을 수행하려는 경우 매우 유용합니다.
Dan Field

내가 이것을 시도하면 pax의 변경 사항이 paxList에도 반영됩니다!
Martin


0

제 경우에는 Automapper를 사용하는 다른 프로젝트에서 일부 코드를 복사했습니다. 프로젝트에 automapper nuget 패키지를 추가하기 만하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.