博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中linq报“Character literal must contain exactly one character”的错误提示
阅读量:4592 次
发布时间:2019-06-09

本文共 1134 字,大约阅读时间需要 3 分钟。

后台代码使用linq提示“Character literal must contain exactly one character”:

  网上看了一下提示在部分linq语句中直接写入值会进行逻辑处理,导致数据类型不一致。尝试修改以后解决了问题,再次备注一下.

修改前(报错)的代码:

T_DS_ORDER_OPRATIONDAL LoadDal = new T_DS_ORDER_OPRATIONDAL();            try            {                Loadlist = getsavelist(dt, loginUser);                //删除未提交的数据                LoadDal.Delete("status=0 and lastupdateuserid = '" + loginUser.UserId.Trim() + "'"); //这句为报错行

 修改(正确)的代码:

T_DS_ORDER_OPRATIONDAL LoadDal = new T_DS_ORDER_OPRATIONDAL();            try            {                Loadlist = getsavelist(dt, loginUser);                //删除未提交的数据                //LoadDal.Delete("status=0 and lastupdateuserid = '" + loginUser.UserId.Trim() + "'");  //报错行                LoadDal.Delete("status=0 and lastupdateuserid = \"" + loginUser.UserId.Trim() + "\"");

报错是因为拼接出来的sql语句进行C#处理以后,实际'“ + loginUser.UserId.Trim() + "'"的值的类型变了,如实际结果是‘123’,在sql里边这个是字符串类型,但是经过C#处理后,这个就变成字符型,而数据库里边定义的lastupdateuserid这个字段是字符串类型的,所以进行处理的时候就会报错,在C#中‘’表示字符,“”才表示字符串,所以把之前的单引号换成双引号就可以了,换成双引号以后经过C#处理得到就是字符串类型,和数据库里边的类型匹配。

提示:此类语句在编译时可正常通过,只有运行时才会报错

转载于:https://www.cnblogs.com/jkf37551/p/5945626.html

你可能感兴趣的文章
企业化的性能测试简述---如何设计性能测试方案
查看>>
centos7 安装中文编码
查看>>
POJ - 3683 Priest John's Busiest Day
查看>>
正则表达式start(),end(),group()方法
查看>>
vuejs 学习旅程一
查看>>
javascript Date
查看>>
linux常用命令2
查看>>
狼图腾
查看>>
13、对象与类
查看>>
5.28团队第二阶段冲刺(三)
查看>>
Sublime Text3 个人使用心得
查看>>
jquery 编程的最佳实践
查看>>
MeetMe
查看>>
IP报文格式及各字段意义
查看>>
(转载)rabbitmq与springboot的安装与集成
查看>>
C2. Power Transmission (Hard Edition)(线段相交)
查看>>
STM32F0使用LL库实现SHT70通讯
查看>>
Atitit. Xss 漏洞的原理and应用xss木马
查看>>
MySQL源码 数据结构array
查看>>
(文件过多时)删除目录下全部文件
查看>>