Error: An expression tree may not contain a dynamic operation
I use Asp.Net 4 and C#, I use EF 4.
I have this query, I receive an error:
An expression t开发者_开发问答ree may not contain a dynamic operation
dynamic o = e.Item.DataItem;
var imagesContent = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == o.ContentId);
It seems is imposible to Cast a Dynamic Type using a Lamba Expression.
How I can fix the problem, and able to use my object o in my Lamba
? Thanks
PS:
e.Item.DataItem
is of Type CmsContent
and o.ContentId
is of type Int
Unboxing the object will do the trick:
int contentId = (int)o.ContentId;
var image = context.CmsImagesContents.FirstOrDefault(img => img.ContentId == contentId);
For more info about 'boxing/unboxing' click here
Change
dynamic o = e.Item.DataItem;
To
var o = (CmsContent)e.Item.DataItem;
I was seeing this issue in code that was not using dynamics in any obvious way. I found it was caused by the inclusion of the below reference in the class using statements. Removing it seemed to change the way the the compiler interpreted the Linq expression.
using System.Linq.Dynamic.Core;
精彩评论