Linq的模糊查詢(包含精確模糊查詢)


目錄:

1.判斷是否為空或者null

2.普通包含模糊查詢

  1)以某字符串開頭的模糊查詢

  2)以某字符串結尾的模糊查詢

  3)包含某字符串的模糊查詢

3.精確到字符串對應位數字符的模糊查詢(*重點)

 

linq大家肯定用過,對於其中的模糊查詢肯定也有所了解

提起linq的模糊查詢首先大家想到的肯定是 Contains

不錯這也是linq模糊查詢的精髓,一般的模糊查詢用 Contains都是可以解決的,特護的精確到字符串某一位的迷糊查詢就得另想辦法了,

話不多說,下面一一說下模糊查詢:

先貼出整個查詢,在一一說明,並且把對應的sql語句也會寫出來:

using (SrsContext db = new SrsContext())
            {
                var dt1 = (from des in db.ModelsVehicleRecognition
                           where (!string.IsNullOrEmpty(des.PlateNum))
                           select new { plateMun = des.PlateNum });
                var var1 = dt1.ToList();

                var dt2 = (from des in db.ModelsVehicleRecognition
                           where (des.PlateNum.StartsWith("皖A8"))
                           select new { plateMun = des.PlateNum });
                var var2 = dt2.ToList();

                var dt3 = (from des in db.ModelsVehicleRecognition
                           where (des.PlateNum.EndsWith("68T"))
                              select new { plateMun = des.PlateNum });
                var var3= dt3.ToList();

                var dt4 = (from des in db.ModelsVehicleRecognition
                              where (des.PlateNum.Contains("A3"))
                              select new { plateMun = des.PlateNum });
                var var4 = dt4.ToList();


                var dt5 = (from des in db.ModelsVehicleRecognition
                             where (SqlFunctions.PatIndex("_a__3%", des.PlateNum) > 0)
                             select new { plateMun=des.PlateNum});
                var var5 = dt5.ToList();               
            }
View Code

1.判斷是否為空或者null

string.IsNullOrEmpty(des.PlateNum)————————>sql server的PlateNum is null的判斷

from des in db.ModelsVehicleRecognition where (!string.IsNullOrEmpty(des.PlateNum)) select new { plateMun = des.PlateNum }

等同於

SELECT PlateNum FROM VehicleRecognition WHERE PlateNum IS NOT NULL

2.普通包含模糊查詢

1)以某字符串開頭的模糊查詢

des.PlateNum.StartsWith("皖A8") ————————>sql server 的   like '皖A8%'

from des in db.ModelsVehicleRecognition where (des.PlateNum.StartsWith("皖A8")) select new { plateMun = des.PlateNum }

等同於

SELECT PlateNum FROM VehicleRecognition WHERE PlateNum  like '皖A8%'

2)以某字符串結尾的模糊查詢

des.PlateNum.EndsWith("68T") ————————>sql server 的   like '%68T'

from des in db.ModelsVehicleRecognition where (des.PlateNum.EndsWith("68T")) select new { plateMun = des.PlateNum }

等同於

SELECT PlateNum FROM VehicleRecognition WHERE PlateNum  like '%68T'

3)包含某字符串的模糊查詢

des.PlateNum.Contains("A3") ————————>sql server 的   like '%A3%'

from des in db.ModelsVehicleRecognition where (des.PlateNum.Contains("A3")) select new { plateMun = des.PlateNum }

等同於

SELECT PlateNum FROM VehicleRecognition WHERE PlateNum  like '%A3%'

3.精確到字符串對應位數字符的模糊查詢(*重點)

SqlFunctions.PatIndex("_a__3%", des.PlateNum) > 0————————>sql server 的   like '_a__3%'

from des in db.ModelsVehicleRecognition where (SqlFunctions.PatIndex("_a__3%", des.PlateNum) > 0) select new { plateMun = des.PlateNum }

等同於

SELECT PlateNum FROM VehicleRecognition WHERE PlateNum  like '_a__3%'

說明:'_a__3%' 中的下划線“_”表示一個字符,'_a__3%' 這個字符串查詢意思就是第二個字符是a,第五個字符是3的字符串

       因為a和3之間有兩個下划線“_”所以查詢出的結果也要滿足a和3之間有兩個字符才行,

       也就是說兩個精確字符之間隔了幾個字符,在查詢的時候就要寫幾個下划線“_”。

最后最后最后,重要的事情說三遍,來着是客,如果您覺得好就推薦或評論下,覺得不好希望能得到您的建議,繼續改善.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM