2011-03-29 2 views
0

내가이 작업을 수행 할 수 :Linq to Entities 쿼리를 선택하는 데 조건을 사용할 수 있습니까?

Dim person = From p In context.persons 
    Order By p.fileNum 
    Select p.ID, 
    p.firstName, 
    p.lastName, 
    startPenpal = IIf(p.prPenPals.Count > 0, 
     p.prPenPals.FirstOrDefault.startProfile, "") 

내가이 오류를 얻을 : 엔티티에

LINQ는 방법 '은 System.Object하여 IIf (부울은 System.Object,하는 System.Object)를'인식하지 않습니다 방법 이 메서드는 저장소 식으로 변환 할 수 없습니다.

나는
Select p.ID, p.firstName, p.lastName, 
    startPenpal = If(i.prPenPals.Count > 0, 
     i.prPenPals.FirstOrDefault.startProfile, "") 

을 시도하고이 오류 얻을 : '은 System.Object'을 입력 할 유형 'System.DateTime'를 캐스팅 할 수

수 없음을. 엔터티에 대한 LINQ는 엔터티 데이터 모델 기본 형식을 캐스팅하는 기능 만 지원합니다.

이 방법이 있습니까? prPenpals는 Person의 각 레코드에 대해 0 또는 하나의 레코드를 포함 할 수 있습니다. 사람과 prPenPal 사이에 1 대 0-1 연관이 있어야하지만이 모델에는 1 대 1로 설정되어 있으므로 변경할 수 없습니다.

답변

0

귀하의 실수는 여기, 내 생각 :

If(i.prPenPals.Count > 0, i.prPenPals.FirstOrDefault.startProfile, "") 

당신은 당신이 값에 대해 동일한 유형을 반환합니다 확인해야합니다. 나는 C에 #이기 때문에 VB의 구문에 대한

If(i.prPenPals.Count > 0, i.prPenPals.FirstOrDefault.startProfile, DateAndTime.MinValue) 

확실하지,하지만 주요 아이디어는 동일합니다 : i.prPenPals.FirstOrDefault.startProfile는 날짜 시간이 경우,이 작업을 수행.