LinQ to SQL构建动态条件表达式,Expression.GreaterThan方法遇到枚举类型属性报异常

anliuty 2018-01-01 10:38:43
在LinQ to SQL构建动态条件表达式时,当构造>、>=、<、<=这4种条件时,当调用
Expression.GreaterThan、Expression.GreaterThanOrEqual、
Expression.LessThan、Expression.LessThanOrEqual
这4个方法时,如果遇到枚举类型属性,就会报错,提示如下:没有为类型“xxx”和“xxx”定义二进制运算符 GreaterThan”,
其中xxx是枚举类型的具体类型。原因好像是因为枚举类型没有实现上述4种操作符。

我尝试用CompareTo(value)方法变相实现比较,虽然可以构造表达式,但是在运行时生成SQL失败。

请问,有什么办法解决这个问题?
...全文
528 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
anliuty 2018-01-02
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
枚举在查询的时候转换为整数,再比较。
构造表达式的时候,Expression.GreaterThan(left, right),其中left表示属性访问表达式,右边表示要比较的值表达式,右边转换为整数容易,左边是通过反射取实体属性的表达式,如果要将左边转换为整型,请问怎么写?
threenewbee 2018-01-02
  • 打赏
  • 举报
回复
枚举在查询的时候转换为整数,再比较。
正怒月神 2018-01-02
  • 打赏
  • 举报
回复
枚举值转换了吗 Expression.GreaterThan((int)你的枚举值)
anliuty 2018-01-02
  • 打赏
  • 举报
回复
自己顶上去,不能沉了

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧