linq大家肯定用過呈野,對于其中的模糊查詢肯定也有所了解
提起linq的模糊查詢首先大家想到的肯定是 Contains
不錯這也是linq模糊查詢的精髓智亮,一般的模糊查詢用 Contains都是可以解決的毅厚,特護(hù)的精確到字符串某一位的迷糊查詢就得另想辦法了秃流,話不多說碳默,下面一一說下模糊查詢:
先貼出整個查詢,在一一說明疮绷,并且把對應(yīng)的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("皖A(yù)8"))
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();
}
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("皖A(yù)8") ————————>sql server 的 like '皖A(yù)8%'
from des in db.ModelsVehicleRecognition where (des.PlateNum.StartsWith("皖A(yù)8")) select new { plateMun = des.PlateNum }
等同于
SELECT PlateNum FROM VehicleRecognition WHERE PlateNum like '皖A(yù)8%'
2)以某字符串結(jié)尾的模糊查詢
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.精確到字符串對應(yīng)位數(shù)字符的模糊查詢(*重點)
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之間有兩個下劃線“_”所以查詢出的結(jié)果也要滿足a和3之間有兩個字符才行肆资,
也就是說兩個精確字符之間隔了幾個字符矗愧,在查詢的時候就要寫幾個下劃線“_”灶芝。