0

안녕하세요 어쩌면 저는이 방법을 잘못 작성했지만 제대로 작동하지 않을 수 있습니다.WCF 데이터 서비스 (LINQPad)에서 LINQ를 사용하는 세 번째 수준의 필터

내가 가지고 다음 엔티티 모델 : [부] < 0..1> - < *> [세션] < 1> - < 0..1> [영화]

내가 실행 (LINQPad에서) 다음 LINQ 쿼리 :

from d in Divisions select new {d, d.Sessions, 
films = from s in d.Sessions where s.Film.Title !=null select s} 

하지만 오류 얻을 : AP에 제한이 궁금

Constructing or initializing instances of the type <>f__AnonymousType0 3[LINQPad.User.Division,System.Collections.ObjectModel.Collection 1[LINQPad.User.Session],System.Collections.Generic.IEnumerable`1[LINQPad.User.Session]] with the expression d.Sessions.Where(s => (s.Film.Title != null)) is not supported.

을 WCF 데이터 서비스의 세 번째 수준에 필터를 적용하거나 내 편이 잘못 생각한 것입니다.

+0

http://stackoverflow.com/questions/14532184/wcf-data-services-query-projection-with-nullable-navigation-properties 도움이 될 수 있습니다. – Narthring

+0

@Narthring. 고마워요! – objecto

답변

0

이 녀석은 here이 맞습니까? 은? (iif) 연산자는 "title = (s.Film == null)? null : s.Film.Title" 과 같이 작동합니다. 따라서 Film 객체가 null 인 경우에도 다음 표현식은 인 경우에도 으로 작동합니다.

var _divsess = from d in Divisions select new 
    {d , sessionsfilms = from s in d.Sessions 
    select new {s, title= (s.Film == null) ? null : s.Film.Title }};