2009-05-01 13 views
1

私は検索クエリを行うためにSQLにVB.NETとLinqを使用しています。私はLinqのContainsメソッドを使って入力キーワードを調べています。これはこのようなものですnote.note_content.Contains(InputKeyWord)LinqからSQLに単語全体を検索

「コード」を検索すると、「それに応じて」も出てくるという問題があります。結果をキーワードとのみ一致させたい。

Linqでキーワード全体を検索するにはどうすればよいですか?

ありがとうございます。

+0

これはなぜ-1でしたか?明らかにこの質問への答えと何か私は喜んで見つけた – toy

答えて

2

私は、inputKeywordが先頭と末尾に現れることができると仮定しているため、3つの可能な場所に3つのOR句を指定する必要があります。したがって、あなたの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

+0

Regexでこれを行う方法を教えていただければ幸いです。 –

+0

私はRegexがうまくいかないので、私はあなたのためのリンクを提供しました。しかし、私の例ではwhere節を使ってみましたか? –

+0

はい、私はやって、それは働いた。あなたのご意見ありがとうございます。 :D –

0

データの区切り文字またはスペースはありますか? .Like(InputKeyword)を使用すると、もう少し細かく調整することができます。

+0

私は我々がLikeメソッドを持っているとは思わない。 –

+0

Likeメソッドが必要です。 –

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 
+0

デリミタはありません。ユーザーは「2コード」、「コードの何か」などを検索できます。 –

関連する問題