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

时间:2011-12-09 19:47:25

标签: c# linq entity-framework search

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

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

如果术语=“鞋子”< - 作品

如果术语=“工作鞋”< - works

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

我还尝试用逗号分隔SearchTerm数据,但这不起作用。 有什么建议吗?

1 个答案:

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