2014-02-27 126 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禮,我試圖用你的代碼,有時其作品(對於某些字符串),有時不是同一個列表,任何想法? –