我为一个产品站点构建了一个搜索功能。搜索工作正常。最近,我们在数据库中添加了一个 SearchTerm 字段。 SearchTerm 数据示例:“work shoes blue black gear” 当前代码是
pM = (from p in ctx.Products
where
p.productSearchField.Contains(term) ||
p.productName.Contains(term)
select p).ToList()
如果 term = "shoes"<-- 有效
如果 term = "work shoes"<-- works
如果术语 = "black shoes"<-- 不起作用。
我还尝试用逗号分隔 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()
关于c# - 使用 .Contains 的搜索功能包含一个字段中的术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450887/