2011-12-09 103 views
3

我已經爲產品網站構建了搜索功能。搜索工作正常。最近,我們在數據庫中添加了一個SearchTerm字段。 SEARCHTERM數據例如:「工作鞋藍黑色齒輪」 當前的代碼搜索功能使用。在一個字段內包含術語

pM = (from p in ctx.Products 
         where 
          p.productSearchField.Contains(term) || 
          p.productName.Contains(term) 
         select p).ToList() 

如果術語=「鞋」 < - 工程

如果術語=「工作鞋」 < - 工程

如果術語=「黑色鞋」< - 不起作用。

我也嘗試用逗號分隔SearchTerm數據,但那沒用。 有什麼建議嗎?

回答

3

將術語拆分爲單個術語。看看是否有匹配:

term.Split(' ').Any(i => p.productSearchField.Contains(i)) 

或者,如果每一個字必須匹配:

term.Split(' ').All(i => p.productSearchField.Contains(i)) 


編輯

   var terms = term.Split(' '); 
      pM = (from p in ctx.Products 
        where 
         terms.All(i => p.productSearchField.Contains(i)) || 
         p.productName.Contains(term) 
        select p).ToList() 
+0

我正在運行eitherone錯誤:LINQ到實體不承認方法'System.String [] Split(Char [])'方法,並且此方法不能被轉換爲存儲表達式。 –

+1

我很擔心這一點。該文件有點奇怪,但我的編輯應該解決這個問題。 – Joe

+0

工作!謝謝。 –

相關問題