错误:表达式树可能不包含动态操作
本文关键字:包含 动态 操作 表达式 错误 | 更新日期: 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
的类型为CmsContent
o.ContentId
为Int
型
将对象拆箱即可:
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;