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

    作者:小城故事
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Django的form表单
    Django的组件
    django组件的forms组件
    调用函数的时候参数全部变成了基名
    bash:/usr/bin/mogod/:connot execute binary:exec fotmat error
    脚本实现显示服务启动成功与否
    ./vi: line 2: mkdir: command not found
    chroot: cannot run command `/bin/bash': No such file&nbs
    脚本(复制命令及依赖库到另一个根文件系统)
    matlab安装教程
  • 原文地址:https://www.cnblogs.com/puda/p/3423013.html
Copyright © 2011-2022 走看看