lambda表达式 类型转换 10

wherelambda=whereExpression.And(wherelambda,z=>Convert.ToInt32(z.shuzhi)>=Convert.ToI... wherelambda = whereExpression.And(wherelambda, z => Convert.ToInt32(z.shuzhi) >= Convert.ToInt32(shuzhi2) && Convert.ToInt32(z.shuzhi3) <= Convert.ToInt32(shuzhi4));

其中 数值2 和数值4 使用lambda表达式前面就转换为int类型,但是 数值 和数值3 这是根据数据库表映射出来的列,我这个应该怎么进行转换呢,这个列是字符串类型,要比对的话只能转为int进行比对,lambda又不能这么转换
展开
 我来答
E30814075
2019-02-19 · 超过72用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:66%
帮助的人:79万
展开全部

方法应该不止一种,简单的就是在z的model里设置下就好了

private string _shuzhi;
        public int shuzhi
        {
            get { return Convert.ToInt32(_shuzhi); }
            set { _shuzhi = value; }
        }

复杂一点的话,可以从数据库读取z-Model那里操作,加个特性,重新映射数据库表对应的model字段

[DataMapping("shuzhi", System.Data.DbType.String)]
        public int shuzhi { get; set; }

建议你用上面那种简单的方法,因为数据库里的字符串不一定能全部转换为int类型,处理不好容易抛异常。而用上面那种方法可以有很多种方式避免异常,比如

int.TryParse("1",out shuzhi)
追问
数据库中字段是varchar类型的,有没有办法进行关系运算符的比较。。
追答
说了啊,你可以在与数据库表对应的实体对象里处理,将数据库对应的那个字段转换成你想要的int类型,然后用lambda表达式比较。在sqlserver里varchar是可以直接比较大小的,比如'1'<'2','1'<'12',但是这种方式不推荐
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式