首页 新闻 会员 周边 捐助

各位高手请教一个问题

0
[待解决问题]

Expression<Func<TRBase_07, bool>> predicate = null;

predicate = z => z.CE05 =="良好" && Convert.ToInt32(z.CE08)  >60;

 

CE08是 varchar(200),  上面这句话报错, 请问怎么改。

LINQ to Entities 不识别方法“Int32 ToInt32(System.String)”,因此该方法无法转换为存储表达式。

infoinfo的主页 infoinfo | 菜鸟二级 | 园豆:202
提问于:2016-09-17 13:59
< >
分享
所有回答(4)
0

提前定好一个变量=Convert.ToInt32(z.CE08)

happydaily | 园豆:260 (菜鸟二级) | 2016-09-17 15:07

你好, 提前定义,怎么取z.CE08。

支持(0) 反对(0) infoinfo | 园豆:202 (菜鸟二级) | 2016-09-17 19:14

@infoinfo: 那就是你定义出了问题,z.CE08就定义为int类型的

支持(0) 反对(0) happydaily | 园豆:260 (菜鸟二级) | 2016-09-18 08:11
0

你是运行时报错还是编译时? 如果是运行时报错 建议楼主不要这么写代码 这种代码在我们项目里会被骂的!

你要用 int.parse()来转换 这样即使转换失败也不会运行时报错!

如果是编译时报错 就查下CE08到底是个什么类型! 具体可以分解出来调试下! 一下就知道问题在哪里了! 这种问题 一般最自己动手调试 你也问不出什么的! 因为别人也不知道你具体的上下文代码怎么写的

狂扁小朋友 | 园豆:10 (初学一级) | 2016-09-17 15:27
0

建议将这些常见的转换,封装成sql function,然后use it

jello chen | 园豆:7336 (大侠五级) | 2016-09-17 16:40
0

数据库里是没有Convert.ToInt32的,有两种做法:

1.映射一个数据库函数,这个函数就是把字符转成int

2.直接z.CE08>"60",这个前提是你的位数什么的也相同,因为按字符串排序61也是大于60的。。。

顾晓北 | 园豆:10898 (专家六级) | 2016-09-18 14:11

字符串不能进行比较吧!

支持(0) 反对(0) infoinfo | 园豆:202 (菜鸟二级) | 2016-09-18 14:28

@infoinfo: 理论上是没这么试过的,但理论上也是可以这么比较的,就是不知道你这为什么要这么设计,字符串一般查like之类的比较多

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-09-18 14:30

@infoinfo: 另外,你自己试试不就知道了么?

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-09-18 14:31

@顾晓北: CE08是varchar,应该设计成int, 要是改类型的话,改的地方太多了。所以想进行转换类型, 这样其他地方就不用改了。

支持(0) 反对(0) infoinfo | 园豆:202 (菜鸟二级) | 2016-09-18 14:32

@infoinfo: 自己看我的回复吧,你要想简单,你就先试试直接字符串对比行不行,不行就按第一个方法,肯定可以。

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-09-18 14:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册