2013-05-21 2 views
0

메신저 가진 예외 유형'System.Collections.Generic.List 을 '변환 할 수 없습니다. . 는 암시 적으로 내 컨트롤러에서 'System.Collections.Generic.IEnumerable <Models>

 public IEnumerable<APPLICANT> GetApplicant() 
    { 
     IEnumerable<APPLICANT> applicantdata = Cache.Get("applicants") as IEnumerable<APPLICANT>; 
     IEnumerable<Profile> profiledata = Cache.Get("profiles") as IEnumerable<Profile>; 


     if (applicantdata == null) 
     { 



      var applicantList = (from a in context.Profiles 
           join app in context.APPLICANTs 
           on a.PROFILE_ID equals app.Profile_id into joined 
           from j in joined.DefaultIfEmpty(new APPLICANT()) 
           select new 
              { 
               APPLICANT = j, 
               Profile = a, 
              }).Take(1000).AsEnumerable(); 

        applicantdata = applicantList.ToList(); 


      if (applicantdata.Any()) 
      { 
       Cache.Set("applicants", applicantdata, 30); 
      } 
     } 
     return applicantdata; 

    } 

이 내가 예외 얻을 라인 :

내 컨트롤러

applicantdata = applicantList.ToList(); 

을 그리고 이것은

암시 적으로 변환 할 수 없습니다 유형 '은 System.Collections 예외입니다 총. '시스템. 콜렉션. 일반.리스트.'. 명시 적 변환이 존재한다 (당신은 캐스트를 누락?)

오히려 예외보다는 나에게 컴파일 타임 오류처럼 들리지만, 어쨌든

답변

2

... 당신의 select 절에서

봐 :

select new 
{ 
    APPLICANT = j, 
    Profile = a, 
} 

그건 익명의 유형입니다. 으로 변환하면 APPLICANT으로 변환 될 수 있습니까? 아마도 당신은 단지 APPLICANT을 원할 것입니다. 정말 명확하지는 않지만 기본적으로 유형의 목록으로 변환하려는 경우 익명 유형을 원하지 마십시오. 당신이경우 바로 j 범위 변수에 신청을 원하는 바로 사용

select j 

을 (AS를 제외하고, 그것은 좋은 것입니다 가능한 한 .NET의 이름 지정 규칙을 따라야하려고 - 어느 유형 이름을 SHOUTY_CASE에 속성 이름이 없어야합니다.

+0

감사합니다. . 난 그냥이 하나처럼되고 싶어요 ... http://stackoverflow.com/questions/4497086/linq-left-join-and-right-join –

+0

@EnriqueGil : 아니, 그렇지 않아 - 왜냐하면 그것은 익명 유형. 당신은'IEnumerable '타입의 변수에 값을 할당하려합니다. 그래서 익명의 타입을 사용할 수 없습니다. –

+0

'select j'를 만든 후 의 깜박임'NotSupportedException이 사용자 코드에 의해 처리되지 않았습니다 'Model.APPLICANT'라는 엔터티 또는 복합 유형을 LINQ to Entities 쿼리에서 생성 할 수 없습니다. ' –

관련 문제