搜索function使用.Contains与一个字段中的术语

我为产品网站构建了搜索function。 搜索工作正常。 最近,我们在数据库中添加了一个SearchTerm字段。 SearchTerm数据示例:“工作鞋蓝黑色齿轮”当前代码是

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

如果术语=“鞋子”< – 有效

如果术语=“工作鞋”< – 有效

如果术语=“黑鞋”< – 不起作用。

我还尝试用逗号分隔SearchTerm数据,但这不起作用。 任何建议?

将该术语分为单个术语。 看看是否匹配:

 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()