2014-02-27 226 views
0

我需要做的是搜索该搜索字符串的列表,如果我把例如搜索忽略大小写敏感

字符串像N或名或Na我会得到所有的以下条目

我应该怎么做?

我尝试用下面的代码是不工作的罚款,如果这个词

myname 
name 
name1 
NAME 
n 
N 
Run 



SearchValue = (from stp in SearchValue where stp.Description.Contains(_searchString) select stp).ToList<Serv>(); 

回答

5

你必须使用IndexOf + StringComparison.CurrentCultureIgnorecase

SearchValue = SearchValue 
    .Where(sv => sv.Description.IndexOf(_searchString, StringComparison.CurrentCultureIgnoreCase) >= 0) 
    .ToList(); 
+0

您实际上在此处使用LINQ'Enumerable .Contains'扩展方法。字符串方法可能更有效。 –

+0

谢谢蒂姆当我运行它有错误错误'System.StringComparer'不包含'CurrentCultureIgnorecase'的定义任何想法? –

+0

@EliArbel:好点,相应地编辑我的答案。 –

1

您可以使用IndexOf支持区分大小写的比较:

SearchValue = (from stp in SearchValue 
       where stp.Description.IndexOf(_searchString, 
        StringComparison.InvariantCultureIgnoreCase) >= 0 
       select stp).ToList<Serv>(); 

如果您想进行文化意识比较,可以使用CurrentCultureIgnoreCase

+0

HI礼,我试图用你的代码,有时其作品(对于某些字符串),有时不是同一个列表,任何想法? –