使用Linq to SQL搜索整个单词

时间:2009-05-01 03:36:07

标签: .net linq linq-to-sql

我正在使用VB.NET和Linq to SQL来进行搜索查询。我正在使用Linq的Contains方法来查找输入关键字。就像这个note.note_content.Contains(InputKeyWord)

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

如何使用Linq搜索整个关键字?

谢谢。

3 个答案:

答案 0 :(得分:2)

我假设inputKeyword可以出现在开头,音符之间和音符末尾的任何位置,因此你需要有3个OR子句用于它可能出现的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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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