【问题标题】:How to use linq with enum type如何使用带有枚举类型的 linq
【发布时间】:2015-12-16 02:36:30
【问题描述】:

在我们的项目中,我们有一段代码如下所示:

return (productEvents.Where(s => event.Equals(s.Type))); 

其中events.Type 都属于枚举类型EventType。

但在运行时,它会抛出异常并显示此消息

无法将类型“EventType”转换为类型“System.Object”。 LINQ 到 实体仅支持转换 EDM 基元或枚举类型。

【问题讨论】:

  • 这里的event 是什么?你如何定义enum
  • 不能使用event作为变量名,必须使用@event,因为event是C#中的关键字
  • Type 表示对象的类型,我认为你要么有错字,要么你不应该有名为 type 的枚举
  • 您是否尝试过s => s.Type == event 使用Equals 方法?
  • 您确实需要提供minimal reproducible example

标签: c# linq enums


【解决方案1】:

如果您将当前代码更改为:

return (productEvents.Where(s => event == s.Type)); 

它应该工作。当您使用 Equals 方法时,Linq to 实体会尝试从您的表达式创建一个 sql 查询,而当您使用 Equals 方法时,它将尝试转换强制转换,而 LINQ to Entities 不支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2017-01-02
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2014-07-23
    相关资源
    最近更新 更多