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

本文关键字:包含 动态 操作 表达式 错误 | 更新日期: 2023-09-27 18:06:10

我用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的类型为CmsContento.ContentIdInt

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

将对象拆箱即可:

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

有关"装箱/拆箱"的更多信息,请点击这里

变化

dynamic o = e.Item.DataItem;

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

我在没有以任何明显方式使用动态的代码中看到这个问题。我发现这是由于在类using语句中包含下面的引用引起的。删除它似乎改变了编译器解释Linq表达式的方式。

using System.Linq.Dynamic.Core;