我为产品网站构建了搜索功能。搜索工作正常。最近,我们在数据库中添加了一个SearchTerm字段。 SearchTerm数据示例:“工作鞋蓝黑色齿轮” 目前的代码是
pM = (from p in ctx.Products
where
p.productSearchField.Contains(term) ||
p.productName.Contains(term)
select p).ToList()
如果术语=“鞋子”< - 作品
如果术语=“工作鞋”< - works
如果术语=“黑鞋”< - 不起作用。
我还尝试用逗号分隔SearchTerm数据,但这不起作用。 有什么建议吗?
答案 0 :(得分:3)
将该术语拆分为单个术语。看看是否有任何匹配:
term.Split(' ').Any(i => p.productSearchField.Contains(i))
或者如果每个单词必须匹配:
term.Split(' ').All(i => p.productSearchField.Contains(i))
<小时/> EDIT
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()