2012-04-29 106 views
0

我有一個lambda表達式:拉姆達搜索「包含」不返回預期的結果

 var masterDocs = GetMasterDocs(new TNGService.TngServiceClient()); 
     var searchStr = txtDocSearch.Text; 
     var filtered = masterDocs.Where(i => i.DisplayTitle.Contains(searchStr)); 
     lbxDocuments.DataSource = filtered; 
     lbxDocuments.DataBind(); 

出於某種原因,沒有返回預期的結果。例如,有一個包含單詞「Orifice」的DisplayTitle,但是當我運行這個表達式時,沒有任何返回。我是否以這種錯誤的方式去做?

回答

3

Contains方法區分大小寫。這可能是因爲你的輸入和比較在套管中有所不同嗎?爲了解決這個問題,你可以使用IndexOf來代替:

var filtered = masterDocs.Where(i => 
    i.DisplayTitle.IndexOf(
     searchStr, StringComparison.InvariantCultureIgnoreCase) >= 0); 
+1

aha,那就是它哈哈。謝謝。我只是添加了一些.ToUpper()在那裏,甚至它 – Sinaesthetic 2012-04-29 06:03:25