当前位置: 首页 > 编程语言 > C#

Linq中不区分大小写的“包含”分享

时间:2023-04-10 17:29:03 C#

Linq中不区分大小写的“包含”我有一个mvc项目,我使用linq。在我的数据库中,我有一些记录,如“Something”、“SOmeTHing”、“someThing”、“SOMETHING”、“someTHING”,我想这样做:SELECT*FROMdbo.doc_dt_recordsWHEREnameLIKE'%'+@records.Name+'%'但如果我运行这段代码,list.Count返回0。我该怎么办?records.Name="somethinging";//例如varrec=db.Records.ToList();varlists=rec.Where(p=>p.Name.Contains(records.Name)).ToList();if(lists.Count>0){//dosthng}感谢您的帮助...最简单的方法是使用ToLower()方法varlists=rec.Where(p=>p.Name.ToLower().包含(记录.Name.ToLower())).ToList();更好的解决方案(基于这篇文章:不区分大小写的“包含(字符串)”)varlists=rec.Where(p=>CultureInfo.CurrentCulture.CompareInfo.IndexOf(p.Name,records.Name,CompareOptions.IgnoreCase)>=0).ToList();这根本不是LINQ问题。生成的SQL是否区分大小写取决于与表关联的排序规则。在您的情况下,这可能不区分大小写。您将从发出的任何SQL中获得相同的结果。使用IndexOf和StringComparison.OrdinalIgnoreCase:p.Name.IndexOf(records.Name,StringComparison.OrdinalIgnoreCase)>=0;您可以像这样创建一个扩展函数:publicstaticboolContains(thisstringsrc,stringtoCheck,StringComparisoncomp){returnsrc.IndexOf(toCheck,comp)>=0;}试试这个varlists=rec.Where(p=>String.Equals(p.Name,records.Name,StringComparison.OrdinalIgnoreCase)).ToList();以上文档这里是C#学习教程:Case-insensitive"contains"inLinq分享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: