【问题标题】:Search Feature using .Contains with terms within a one field使用 .Contains 的搜索功能在一个字段中包含术语
【发布时间】:2012-01-17 01:32:12
【问题描述】:

我为产品网站构建了搜索功能。搜索工作正常。最近,我们在数据库中添加了一个 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()

如果术语 = “鞋子”

如果术语 = “工作鞋”

如果这个词=“黑鞋”

我还尝试用逗号分隔 SearchTerm 数据,但没有奏效。 有什么建议吗?

【问题讨论】:

    标签: c# linq entity-framework search


    【解决方案1】:

    将术语拆分为单个术语。看看有没有匹配:

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

    【讨论】:

    • 运行任何一个时出现错误:LINQ to Entities 无法识别方法 'System.String[] Split(Char[])' 方法,并且此方法无法转换为存储表达式。
    • 我很担心。文档对此很奇怪,但我的编辑应该可以解决这个问题。
    猜你喜欢
    • 2014-03-13
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2018-11-11
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多