レストラン名のリストと、料理の種類を保持する別のテーブルへのリンクを含むテーブルがあります。
入力時に各単語がデータベースで検索され、結果が返される検索ボックスを Web ページに提供したいと考えています。Linq to SQL を使用してこれをテストできるようにしたいので、SQL 全文検索の設定を含まないソリューションを探していました。
私の古いコードから、入力テキストを指定してクエリフィルターを作成し、それに基づいてすべての結果を返す関数があります。
Private Function SetupQuery(ByVal searchText As String) As String
Dim searchFields As New List(Of String)
searchFields.Add("Name")
searchFields.Add("Postcode")
searchFields.Add("Cuisine")
Dim firstCol As Boolean = True
Dim a() As String
Dim j As Integer
a = searchText.Trim.Split(" ")
Dim filter As String = ""
Dim compareString As String
For Each col As String In searchFields
For j = 0 To a.GetUpperBound(0)
compareString = a(j).ToUpper()
compareString = compareString.Trim()
If firstCol Then
filter = filter & col & " LIKE '" & compareString & "%' "
firstCol = False
Else
filter = filter & " or " & col & " LIKE '" & compareString & "%' "
End If
Next
Next
Return filter
End Function
これには、検索フィールドがハードコーディングされており、検索テキスト内の各単語と各単語をループして、OR LIKE フィルターを構築します。
これをLINQコードで使用できると確信していますが、特に列がハードコードされており、LINQがそれらを使用する方法で使用されていないため、エレガントなソリューションのようには見えません.
誰かがこれを行うためのより良い方法や、これをどの方向に進めるかについてのヒントをお勧めできますか?
ありがとう