Ошибка: дерево выражений может не содержать динамическую операцию - PullRequest
12 голосов
/ 19 августа 2011

Я использую Asp.Net 4 и C #, я использую EF 4.

У меня есть этот запрос, я получаю сообщение об ошибке:

 An expression tree may not contain a dynamic operation

dynamic o = e.Item.DataItem;
var imagesContent = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == o.ContentId);

Кажется невозможным разыграть динамический тип с использованием выражения Lamba.

Как я могу решить проблему, и могу ли я использовать свой объект o in my Lamba? Спасибо

PS: e.Item.DataItem имеет тип CmsContent и o.ContentId имеет тип Int

Ответы [ 2 ]

10 голосов
/ 19 августа 2011

Распаковка объекта поможет:

     int contentId = (int)o.ContentId;
     var image = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == contentId);

Для получения дополнительной информации о «боксе / распаковке» нажмите здесь

3 голосов
/ 19 августа 2011

Изменить

dynamic o = e.Item.DataItem;

На

var o = (CmsContent)e.Item.DataItem;
...