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)”,因此该方法无法转换为存储表达式。
提前定好一个变量=Convert.ToInt32(z.CE08)
你好, 提前定义,怎么取z.CE08。
@infoinfo: 那就是你定义出了问题,z.CE08就定义为int类型的
你是运行时报错还是编译时? 如果是运行时报错 建议楼主不要这么写代码 这种代码在我们项目里会被骂的!
你要用 int.parse()来转换 这样即使转换失败也不会运行时报错!
如果是编译时报错 就查下CE08到底是个什么类型! 具体可以分解出来调试下! 一下就知道问题在哪里了! 这种问题 一般最自己动手调试 你也问不出什么的! 因为别人也不知道你具体的上下文代码怎么写的
建议将这些常见的转换,封装成sql function,然后use it
数据库里是没有Convert.ToInt32的,有两种做法:
1.映射一个数据库函数,这个函数就是把字符转成int
2.直接z.CE08>"60",这个前提是你的位数什么的也相同,因为按字符串排序61也是大于60的。。。
字符串不能进行比较吧!
@infoinfo: 理论上是没这么试过的,但理论上也是可以这么比较的,就是不知道你这为什么要这么设计,字符串一般查like之类的比较多
@infoinfo: 另外,你自己试试不就知道了么?
@顾晓北: CE08是varchar,应该设计成int, 要是改类型的话,改的地方太多了。所以想进行转换类型, 这样其他地方就不用改了。
@infoinfo: 自己看我的回复吧,你要想简单,你就先试试直接字符串对比行不行,不行就按第一个方法,肯定可以。