2012-02-17 2 views
1

여기 DisplayNamestring이고 foo은 object입니다. foo.ToString()을 사용하면 오류가 발생합니다.문자열에 linq 문자열로 변환

나는 코드가 있습니다

var completionTimeModels = 
    from timeline in context.processTimelines 
    join asst in context.timeKeeping on timeline.Id equals asst.Id into TT 
    from TimeModels in TT.DefaultIfEmpty() 

    let foo = TimeModels.ExternalId !=null ? TimeModels.Name: timeline.circuitName 
    select new Items() 
    { 
     Name = timeline.Name 
     DisplayName = foo 
    }; 

을 내가 수행 할 때 다음

Linq cannot handle .ToString()

+0

TimeModels.Name 및 timeline.circuitName에서 ToString() 메서드를 명시 적으로 호출하므로 문자열이 아닌 것처럼 보입니다. 그렇다면 그들의 유형은 무엇입니까? –

답변

2

ToString() 엔티티 Linq에 대해 정의되지 않습니다

DisplayName = TimeModels.ExternalId !=null ? TimeModels.Name.ToString(): timeline.circuitName.ToString(), 

는 오류를 제공합니다 - 익명 클래스에 투영 한 다음 Linq에서 Object로 전환하여 최종 투영을 할 수 있습니다.

(... 
    select new 
    { 
     Name = timeline.Name, 
     DisplayName = TimeModels.ExternalId !=null ? TimeModels.Name : timeline.circuitName 
    }) 
    .AsEnumerable() 
    .Select(x=> new Items() 
    { 
       Name = x.Name 
       DisplayName = x.DisplayName.ToString() 
    }; 

왜 처음부터이 작업을 수행해야합니까? 어떤 유형의 TimeModels.Nametimeline.circuitName입니까?

+0

첫 번째 선택 DisplayName = TimeModels.ExternalId! = null? TimeModels.Name : timeline.circuitName 은 DisplayName이 문자열 인 것처럼 오류를 표시합니다. – GANI

+0

TimeModels.Name 및 TimeLine.CircuitName은 모두 varchars .. – GANI

+1

데이터베이스에있는 것이 아니라 모델에 어떤 유형입니까? - 그들이 varchar이면 Entities 모델의 문자열 속성에 매핑되어야합니다. – BrokenGlass