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之间有两个字符才行,

       也就是说两个精确字符之间隔了几个字符,在查询的时候就要写几个下划线“_”。

最后最后最后,重要的事情说三遍,来着是客,如果您觉得好就推荐或评论下,觉得不好希望能得到您的建议,继续改善.

 

转载于:https://www.cnblogs.com/sxw117886/p/5718367.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值