我正在使用VB.NET和Linq to SQL来进行搜索查询。我正在使用Linq的Contains方法来查找输入关键字。就像这个note.note_content.Contains(InputKeyWord)
。
问题是,如果我搜索“电源线”,那么“相应”也会出现。我希望结果只与关键字匹配。
如何使用Linq搜索整个关键字?
谢谢。
答案 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也是一个选项。
答案 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