Linq中不区分大小写的"包含"

Bil*_*lal 6 c# linq

我有一个mvc项目,我在其中使用linq.在我的数据库中有一些记录,例如"Someth ing","SOmeTH ing","someTh ing","SOMETH ING","someTH ING"

我想做这个:

SELECT * FROM dbo.doc_dt_records WHERE name LIKE '%' + @records.Name + '%'
Run Code Online (Sandbox Code Playgroud)

但是,如果我运行此代码,list.Count将返回0.我该怎么办?

    records.Name = "someth ing"; //for example
    var rec = db.Records.ToList();
         var lists = rec.Where(p => p.Name.Contains(records.Name)).ToList();
if (lists.Count > 0)
{
    // do sthng
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助......

ymz*_*ymz 9

简单的方法是使用ToLower()方法

var lists = rec.Where(p => p.Name.ToLower().Contains(records.Name.ToLower())).ToList();
Run Code Online (Sandbox Code Playgroud)

一个更好的解决方案(基于这篇文章:不区分大小写'包含(字符串)')

 var lists = rec.Where(p => 
             CultureInfo.CurrentCulture.CompareInfo.IndexOf
             (p.Name, records.Name, CompareOptions.IgnoreCase) >= 0).ToList();
Run Code Online (Sandbox Code Playgroud)

  • LINQ to Entities无法识别方法'Int32 IndexOf(System.String,System.String,System.Globalization.CompareOptions)'方法,并且此方法无法转换为商店表达式. (5认同)