错误:表达式树可能不包含动态操作
我使用 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 表达式转换动态类型。
我如何解决这个问题,并能够在我的 Lamba 中使用我的对象o
?谢谢
PS: e.Item.DataItem
的类型为 CmsContent
并且 o.ContentId
的类型为 Int
I use Asp.Net 4 and C#, I use EF 4.
I have this query, I receive an error:
An expression tree 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
拆箱对象即可解决问题:
有关“装箱/拆箱”的更多信息 点击此处
Unboxing the object will do the trick:
For more info about 'boxing/unboxing' click here
更改
为
Change
To
我在没有以任何明显方式使用动态的代码中看到了这个问题。我发现这是由于在类 using 语句中包含以下引用引起的。删除它似乎改变了编译器解释 Linq 表达式的方式。
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.