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

发布于 2024-11-30 21:28:27 字数 513 浏览 0 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你对谁都笑 2024-12-07 21:28:27

拆箱对象即可解决问题:

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

有关“装箱/拆箱”的更多信息 点击此处

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

病毒体 2024-12-07 21:28:27

更改

dynamic o = e.Item.DataItem;

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

Change

dynamic o = e.Item.DataItem;

To

var o = (CmsContent)e.Item.DataItem;
挽手叙旧 2024-12-07 21:28:27

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

using System.Linq.Dynamic.Core;

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文