我有一个这样的表达式:var values = Enumerable.Range(1,2);return message => message.Properties.Any( p => p.Key == name && int.Parse(p.Value) >= values[0] && int.Parse(p.Value) <= values[1]);这样编译可以,但是当它命中数据库时会抛出异常 'LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression '如果我不进行分析并且将值设置为a string[],则不能在字符串上使用>=and <=运算符。p.Value 是一个包含各种值的字符串,但是在这种情况下,它是 int有没有一种方法可以查询数据库以执行这种之间的语句?
3 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
我最近不得不在LINQ查询中将字符串(数字表示形式)转换为枚举值,而没有实现查询。我的枚举使用0到9之间的int值,所以我最终做了这样的事情:
.Select(str => (MyEnum?)(SqlFunctions.Unicode(str) - 48))
我知道这不能为问题提供完整的解决方案,但是在像我这样的情况下它肯定可以工作。也许有些人会发现它有用。
- 3 回答
- 0 关注
- 826 浏览
添加回答
举报
0/150
提交
取消