Linq +Contains+ Case Insensitive 检索查询不区分大小写方法

通常我们在查询中会只输入关键词来检索,有时候字母会有大小写区分,SQL里面like 是不区分大小写检索的,但是LINQ中会、解决方法如下:

1:  全部转换为大写或者小写进行检索 如:

string name = "Hello";
 var employees = context.employees.Where(emp => emp.Name.ToLower().Contains(name.ToLower()));

2:利用Contains 里面的 StringComparer.OrdinalIgnoreCase 来判断

StringComparer.OrdinalIgnoreCase的解释:https://msdn.microsoft.com/zh-cn/library/5hc8kytd(v=vs.110).aspx

                  List<string> list = new List<string>() { "a", "b", "c", "d", "e" };
         string value = "A";

         if (list.Contains(value, StringComparer.OrdinalIgnoreCase))
             Console.WriteLine(value + "在列表中!");
         else
             Console.WriteLine(value + " 不在列表中!");

3:扩展一个方法利用StringComparison 枚举 来进行判断比较

StringComparison 枚举的解释:https://msdn.microsoft.com/zh-cn/library/system.stringcomparison(v=vs.110).aspx

         public static bool Contains(this string src, string toCheck, StringComparison comp)
         {
             return src.IndexOf(toCheck, comp) >= 0;
         }

4:利用indexof+CompareOptions.IgnoreCase 进行不区分大小写比较后 大于等于0来判断

     getStockData = getStockData.Where(p => CultureInfo.CurrentCulture.CompareInfo.IndexOf(p.Descr_C, strSkuContent, CompareOptions.IgnoreCase) >= 0).ToList();
 

5:利用indexof+StringComparison.OrdinalIgnoreCase进行不区分大小写比较后 大于等于0来判断

      getStockData = (from p in getStockData where p.Descr_C.IndexOf(strSkuContent, StringComparison.OrdinalIgnoreCase) >= 0 select p).ToList<SearchExportStock>();


以上5种方法总有一种适合你的。



其他资料参考:

http://stackoverflow.com/questions/15362926/linq-to-entities-contains-case-in-sensitive-searching
        stackoverflow.com/questions/27107132/case-insensitive-contains-in-linq

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值