编程语言高度抽象化以后,错误也越来越让人难以理解了,
NET编程最常见的一个错误, Object not set to the reference ,过了好久,才明白过来,
就是不明白为啥微软不说 "Null Object can not reference to its property"(空对象不能引用属性)。
昨天碰到一个问题,其实以前也经常碰到,现在解决了,并且发现GOOGLE时候,没有啥好东东可以帮到各位同样碰到问题的兄弟,
就想在这儿分享一下。
相关技术: LINQ, DYNAMIC LINQ
看以下代码:
Dim query = From c In myDataContext.myTable
dim myEndDate as nullable(of datetime)=EndDateEdit.editValue
if myEndDate is not nothing then
query = query.Where(DateFieldName & "<@0", cDate(myEndDate).AddDays(1))
end if
这样的语句在编译时候是可以通过的,但是运行到第4句, query=query.Where(DateFieldName & "<@0", cDate(myEndDate).AddDays(1))
时就会报告错误:Character literal must contain exactly one character (字符文字必须包含一个字符)
苍天啊,大地啊,这个错误也太抽象了。
直接说我的解决方案
Dim query = From c In myDataContext.myTable
dim myEndDate as nullable(of datetime)=EndDateEdit.editValue
if myEndDate is not nothing then
dim myEndDate1 as DateTime=cDate(myEndDate).addDays(1)
query = query.Where(DateFieldName & "<@0", myEndDate1)
end if
万事大吉。
分析原因,LINQ属于后期编译,建议要给LINQ的变量,不要在LINQ表达式中进行运算,而应该先定义一个变量,运算过后,再在LINQ表达式中使用。
其实这个微软在FOR 循环中使用LINQ时,有提醒到。
Character literal must contain exactly one character -- 一天一点小知识的更多相关文章
-
C#中linq报“Character literal must contain exactly one character”的错误提示
后台代码使用linq提示"Character literal must contain exactly one character": 网上看了一下提示在部分linq语句中直接写入 ...
-
VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal
VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal ------------------- ...
-
java中too many characters in character literal
IDE里发现 too many characters in character literal 翻译过来就是 字符中的字符过多 , 一般情况是:把 多个文字 放在了 '' (单引号)里,应该放到 &q ...
-
Bug 29041775 : ORA-41401: Define character set () does not match database character set ()
oracle版本12.2.0.1 Errors in file /u01/app/oracle/diag/rdbms/sibcyb1/CYB111/trace/CYB111_q003_166752.t ...
-
关于Character的digit,forDigit,getNumericValue方法的一点理解
Character类是一个包装类. char这种数据类型是基于原始的Unicode编码的,储存一个char用16个bit,因此定义characters也是16位定长的实体集合. Unicode编码标准 ...
-
Linq 动态查询排序
Linq的排序一般是这样写的: query.OrderBy(x => x.Tel).Skip().Take(); 实际使用中排序字段可能是通过字符类型的参数来设置的,于是想这样实现: query ...
-
Func 委托
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
-
C# ftp 图片上传多快好省
前言 此篇讲到的是图片上传功能,每个网站必定会有这样类似的功能,上传文件.上传图片等等.那么接下来,看看我们EF+uploadfile+ftp如何玩转上传图片吧 效果预览 具体实现 一个简单数据库 只 ...
-
C++ 字面量
https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=vs-2017 C++ supports ...
随机推荐
-
mongodb 启动脚本和配置
http://justcoding.iteye.com/blog/2270466 http://blog.csdn.net/neu*/article/details/32328531
-
C语言第三次作业
#include<stdio.h>//1.三角形 int main() { printf("*\n"); printf("**\n"); print ...
-
C#中相对路径转换为绝对路径的方法
第一种方法:使用System.Web类,System.Web.HttpContext.Current.Server.MapPath('相对路径');它还可以写成下面这种先声明空间,然后再使用函数的方式 ...
-
UVa 1210 (高效算法设计) Sum of Consecutive Prime Numbers
题意: 给出n,求把n写成若干个连续素数之和的方案数. 分析: 这道题非常类似大白书P48的例21,上面详细讲了如何从一个O(n3)的算法优化到O(n2)再到O(nlogn),最后到O(n)的神一般的 ...
-
SQL2008安装提示";Microsoft visual studio 2008早期之前的版本";解决(这是我认为最简单有效的方法)
作者:冰封 日期:2013-10-18 原文地址:http://www.skywj.com/thread-9230-1-1.html 在安装SQL Server的时候提示 Microsoft visu ...
-
bzoj 3551 kruskal重构树dfs序上的主席树
强制在线 kruskal重构树,每两点间的最大边权即为其lca的点权. 倍增找,dfs序对应区间搞主席树 #include<cstdio> #include<cstring> ...
-
git、github、gitlab之间的关系
GIt-版本控制工具:GitHub-一个网站平台,提供给用户空间存储git仓储,保存用户的一些数据文档或者代码等:GitLab - 基于Git的项目管理软件. Git分布式版本控制系统 Git是一款自 ...
-
Linux中使用sed命令替换字符串小结
sed替换的基本语法为: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的 ...
-
敏感词汇过滤DFA算法
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
-
Mysql权限操作、用户管理、密码操作
Mysql的权限 mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表. mysql权限表的验证过程为: 先从user表中的Host,Use ...