我有一张桌子,上面有餐厅名称列表和指向另一个包含美食类型的桌子的链接。
我想在我的网页上提供一个搜索框,在输入时,会在数据库中搜索每个单词并返回结果。我正在寻找一种不涉及设置 sql 全文搜索的解决方案,因为我希望能够使用 Linq to 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 如何使用它们。
任何人都可以推荐一种更好的方法来做到这一点,或者在这个方向上提供一些提示吗?
谢谢