代码之家  ›  专栏  ›  技术社区  ›  Tola

用linq to sql搜索整个单词

  •  1
  • Tola  · 技术社区  · 17 年前

    我正在使用vb.net和linq to sql进行搜索查询。我正在使用linq的contains方法查找输入关键字。就像这样 note.note_content.Contains(InputKeyWord) .

    问题是,如果我搜索“cord”,那么“according”也会出现。我只希望结果与关键字匹配。

    如何用LINQ搜索整个关键字?

    谢谢您。

    3 回复  |  直到 17 年前
        1
  •  2
  •   Jose Basilio    17 年前

    我假设inputKeyword可以出现在注释的开头、中间和结尾的任何位置,因此您需要为它可能出现的3个位置提供3个或子句。所以,您的LINQ WHERE子句可能最终看起来像这样。

    note.note_content.StartsWith(InputKeyword & " ") OR _
    note.note_content.EndsWith(" " & InputKeyword) OR _
    note.note_content.Contains(" " & InputKeyword & " ")
    

    这不是一个很好的解决方案,但它应该是有效的。如果您精通正则表达式,那么这也是LINQ的一个选项。

    阅读此: How to Combine LINQ with Regular Expressions

        2
  •  0
  •   Jason N. Gaylord    17 年前

    数据周围是分隔符还是空格?您可以使用.like(inputkeyword)进一步优化它。

        3
  •  0
  •   eKek0    17 年前

    我猜你的关键词在开头和结尾都有分隔符。如果是真的,你可以用

    from n in note
    where n.note_content.Contains(beginDelimiter + InputKeyWord + endDelimiter) ||
          n.note_content.StartsWith(InputKeyWord + endDelimiter) || 
          n.note_content.EndsWith(beginDelimiter + InputKeyWord)
    select n