貌似已經半年多沒寫一篇帖子了,充分的說明要麼老總一天折騰的讓人心齊疲憊,沒心情去寫;要麼另一種可能就是本身不思進取,說白了就是懶。好在這種狀態在今天被打破了。MoNey加油。數據庫
衆所周知,想在EntityFrame實體框架中使用相似於SQL語句中like的效果時就的使用Contains方法了。框架
但是關於Contains方法使用過程當中會出現的細節問題,並無專門的文章來指出來。spa
小弟才疏學淺,一直只作些b/s開發,所以對於SQL的高級應用不須要接觸,長期使用Lambda 表達式的過程當中,已經完全忘記SQL語句如何編寫,增刪改查基本語句也只會寫個簡單的select語句而已,因此此篇文章不涉及任何SQL知識。設計
一、使用Contains方法的必備條件:調試
Contains等價於SQL中的like語句。不過Contains只針對於字符串(string)類型的數據而言。若是是int等數值類型,則不會有Contains方法的存在,所以數值字段貌似沒法經過使用Lambda表達式來完成like操做。所以在使用實體框架的同時,設計數據的時候若是想使用like請確保數據庫字段爲字符串類型(text、varchar等)。不然在想模糊查詢的時候讓你痛苦不堪。對象
二、Contains方法關聯方法(均等價於SQL中的like[注意:這裏爲何會說是等價呢,由於以下列出的方法均爲Stirng裏的方法。like的應用是不分字符類型的,數值行亦可]):開發
Contains等價於like '%key%' 指示指定的 String 對象是否出如今此字符串中。字符串
EndsWith等價於like '%key' 肯定此字符串實例的結尾是否與指定的字符串匹配。string
StartsWith等價於like 'key%' 肯定此字符串實例的開頭是否與指定的字符串匹配。it
三、使用Contains方法時前往不要忘記非NULL的判斷:
寫這邊文章的緣由來自,今天在使用Contains來作查詢的時候,一直報錯(未將對象引用設置到對象的實例。)。
一開始百思不得其解,通過跟蹤和調試最後才發現數據庫中若是存在值爲NULL的值。
爲何會報錯,看看以下的代碼,想必你們也就知道其中的因此然了。
string str = null;
str.Contains("報錯啦");//這裏會報「未將對象引用設置到對象的實例。」錯
所以不要忘記將代碼
o.SearchKeyword.Contains("查詢條件")
改寫爲:
o.SearchKeyword != null && o.SearchKeyword.Contains(("查詢條件")
寫的有點倉促也不知道以前使用的時候是否還有其餘狀況發生,暫時也就想到這三條須要特別注意的。往後工做中如遇到問題在來擴充吧,就先寫到這裏了。