0

Привет, ребята, возможно, я пишу это неправильно, но не могу заставить его работать.Фильтр 3-го уровня с LINQ в службах данных WCF (LINQPad)

я получил следующее Entity Model: [Отдел] < 0..1> - < *> [Session] < 1> - < 0..1> [Фильм]

Я бегу следующий запрос LINQ (в LINQPad):

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

, но я получаю сообщение об ошибке:

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.

Интересно, есть ли ограничение на ар накладывая фильтр на 3-й уровень в сервисах данных 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 имеет значение.

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 }}; 
Смежные вопросы