Linq的Contains如何不区分大小写(转载)
Linq查询中,需要查询是否包含某字符。代码如下:
string strName = "CFP";
var ur = (from c in ur where c.EventName_EN.Contains(strName) select c);
var ur = (from c in ur where c.EventName_EN.Contains(strName) select c);
运行之后,发现,LINQ本身是区分大小写的。如何让查询时不区分大小写呢?
有两种方法:
第一种如下:
string strName = "CFP";
var ur = (from c in ur where c.EventName_EN.ToLower().Contains(strName.ToLower()) select c);
var ur = (from c in ur where c.EventName_EN.ToLower().Contains(strName.ToLower()) select c);
即都转换成大写或者小写后进行比较。
第二种方法如下:
publicclassMyUserComparer : IEqualityComparer<string>
{publicboolEquals(stringa,stringb){ returna,ToLower().Equls(b.ToLower());}publicintGetHashCode(string a){ returna.GetHashCode();}}调用代码为:
ur = (from c in ur where c.EventName_EN.Contains(strName, new MyStringCompare()) select c);
但第二种方法我一直不能编译通过。留待下次解决吧。

浙公网安备 33010602011771号