错误:表达式树可能不包含动态操作

时间:2011-08-19 07:56:51

标签: c# linq dynamic linq-to-entities

我使用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 Expression投射动态类型似乎是不可能的。

我如何解决问题,并能够使用我的对象o in my Lamba?感谢

PS: e.Item.DataItem属于CmsContent类型 o.ContentId的类型为Int

2 个答案:

答案 0 :(得分:10)

取消装箱对象将起到作用:

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

有关'装箱/拆箱'click here

的详情

答案 1 :(得分:3)

更改

dynamic o = e.Item.DataItem;

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