开发者

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;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜