zoukankan      html  css  js  c++  java
  • Character literal must contain exactly one character -- 一天一点小知识

    编程语言高度抽象化以后,错误也越来越让人难以理解了,

    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时,有提醒到。

    作者:小城故事
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    在Node.js环境下使用npm命令安装OpenLayers6.4.3时,提示错误“rollbackFailedOptional: verb npm-session”的解决办法
    Windows7-64环境中部署OpenLayers6.4.3详细步骤
    Navicat 导出csv数据乱码如何处理?
    Win10 如何右键新建.md文件
    关于loading加载的问题
    X度文库越来越不要脸了!
    Layui date 插件 闪烁 无法选择
    每日识字
    如何生成项目目录结构
    小米招聘 hiring
  • 原文地址:https://www.cnblogs.com/puda/p/3423013.html
Copyright © 2011-2022 走看看