2012-09-14 3 views
0

엔티티에 대한 LINQ에서이 오류가 발생합니다. LINQ to Entities가 'System.String ToString()'메서드를 인식하지 못합니다.
이 일반적인 문제를 어떻게 해결해야합니까?엔티티에 대한 LINQ ToString()의 오류

FleetViewModel.DWTStart는 문자열이며 fleet.DWTStart는 nullable 십진수입니다.

  var qry = from fleet in _entitiesContext.Fleets 
        select new FleetViewModel 
        { 
         FleetID = fleet.FleetID, 
         FleetName = fleet.FleetName, 
         DWTStart = fleet.DWTStart.HasValue?fleet.DWTStart.Value.ToString():"", 
         DWTEnd = fleet.DWTEnd.HasValue ? fleet.DWTEnd.Value.ToString() : "" 
        }; 

감사합니다. 간격이 네 가지 속성에서 엔티티의 다른 아무것도 경우

var qry = _entitiesContext.Fleets 
    .Select(fleet => new { fleet.FleetID, 
          fleet.FleetName, 
          fleet.DWTStart, 
          fleet.DWTEnd }) 
    .AsEnumerable() // Do the rest in-process 
    .Select(fleet => new FleetViewModel { 
     FleetID = fleet.FleetID, 
     FleetName = fleet.FleetName, 
     DWTStart = fleet.DWTStart.HasValue?fleet.DWTStart.Value.ToString():"", 
     DWTEnd = fleet.DWTEnd.HasValue ? fleet.DWTEnd.Value.ToString() : "" 
    }); 

, 당신의 익명의 유형을 건너 뛸 수 있습니다 :

답변

2

은 기본적으로 당신은 당신이 AsEnumerable으로 강제 할 수있는 프로세스 마지막 부분을 할 필요가 시작 - 그것은 당신이 필요하지 않은 가져 오는 데이터를 피하기 위해 정말에만있다 :

var qry = _entitiesContext.Fleets 
    .AsEnumerable() // Do the rest in-process 
    .Select(fleet => new FleetViewModel { 
     FleetID = fleet.FleetID, 
     FleetName = fleet.FleetName, 
     DWTStart = fleet.DWTStart.HasValue?fleet.DWTStart.Value.ToString():"", 
     DWTEnd = fleet.DWTEnd.HasValue ? fleet.DWTEnd.Value.ToString() : "" 
    }); 
+0

내가'ToList' 즉'AsEnumerable'가 지연된 실행/게으른 평가를 maintian 않습니다하는'AsEnumerable'를 선호 하는가? – Jodrell

+0

@ Jodrell : 아무 이유없이 중간 목록을 만드는 것이 더 이상 필요하지 않습니다. –

관련 문제