• Lambda表达式Contains方法(等价于SQL语句中的like)使用注意事项


    貌似已经半年多没写一篇帖子了,充分的说明要么老总一天折腾的让人心齐疲惫,没心情去写;要么另外一种可能就是自己不思进取,说白了就是懒。好在这种状态在今天被打破了。MoNey加油。

    众所周知,想在EntityFrame实体框架中使用类似于SQL语句中like的效果时就的使用Contains方法了。

    可是关于Contains方法使用过程中会出现的细节问题,并没有专门的文章来指出来。

    小弟才疏学浅,一直只做些b/s开发,因此对于SQL的高级应用不需要接触,长期使用Lambda 表达式的过程中,已经彻底忘记SQL语句如何编写,增删改查基本语句也只会写个简单的select语句而已,所以此篇文章不涉及任何SQL知识。

    1、使用Contains方法的必备条件:

    Contains等价于SQL中的like语句。不过Contains只针对于字符串(string)类型的数据而言。如果是int等数值类型,则不会有Contains方法的存在,因此数值字段貌似无法通过使用Lambda表达式来完成like操作。因此在使用实体框架的同时,设计数据的时候如果想使用like请确保数据库字段为字符串类型(text、varchar等)。否则在想模糊查询的时候让你痛苦不堪。

    2、Contains方法关联方法(均等价于SQL中的like[注意:这里为什么会说是等价呢,因为如下列出的方法均为Stirng里的方法。like的应用是不分字符类型的,数值行亦可]):

    Contains等价于like '%key%' 指示指定的 String 对象是否出现在此字符串中。

    EndsWith等价于like '%key' 确定此字符串实例的结尾是否与指定的字符串匹配。

    StartsWith等价于like 'key%'  确定此字符串实例的开头是否与指定的字符串匹配。

    3、使用Contains方法时前往不要忘记非NULL的判断:

    写这边文章的原因来自,今天在使用Contains来做查询的时候,一直报错(未将对象引用设置到对象的实例。)。

    一开始百思不得其解,经过跟踪和调试最后才发现数据库中如果存在值为NULL的值。

    为什么会报错,看看如下的代码,想必大家也就知道其中的所以然了。
    string str = null;
    str.Contains("报错啦");//这里会报“未将对象引用设置到对象的实例。”错

    因此不要忘记将代码

    o.SearchKeyword.Contains("查询条件")

    改写为:

    o.SearchKeyword != null && o.SearchKeyword.Contains(("查询条件")

    写的有点仓促也不知道之前使用的时候是否还有其他情况发生,暂时也就想到这三条需要特别注意的。日后工作中如遇到问题在来扩充吧,就先写到这里了。

  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/frlmoney/p/3654196.html
Copyright © 2020-2023  润新知