猿问

实体框架/ Linq EXpression从字符串转换为int

我有一个这样的表达式:


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


有没有一种方法可以查询数据库以执行这种之间的语句?


喵喵时光机
浏览 835回答 3
3回答

潇潇雨雨

我最近不得不在LINQ查询中将字符串(数字表示形式)转换为枚举值,而没有实现查询。我的枚举使用0到9之间的int值,所以我最终做了这样的事情:&nbsp; &nbsp; .Select(str => (MyEnum?)(SqlFunctions.Unicode(str) - 48))我知道这不能为问题提供完整的解决方案,但是在像我这样的情况下它肯定可以工作。也许有些人会发现它有用。
随时随地看视频慕课网APP
我要回答