J'ai une table qui contient une liste de noms de restaurants et des liens vers une autre table qui contient le type de cuisine.Tests de recherche complets dans LINQ (requête de filtre personnalisée)
Je souhaite fournir un champ de recherche sur ma page Web qui, lors de la saisie, recherche chaque mot dans la base de données et renvoie les résultats. Je cherchais une solution qui n'implique pas la mise en place de la recherche en texte intégral sql car je veux pouvoir la tester en utilisant Linq to SQL.
De mon ancien code j'ai une fonction qui crée un filtre de requête donné le texte d'entrée et renvoie tous les résultats basés sur cela.
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
Cela a les champs de recherche codés en dur et des boucles puis à travers chacun et chaque mot dans le texte de recherche pour construire un filtre OU COMME. Je suis sûr que je pourrais alors utiliser ceci dans mon code LINQ mais cela ne semble pas une solution élégante d'autant plus que les colonnes sont codées en dur et non utilisées par LINQ.
Quelqu'un pourrait-il recommander une meilleure façon de le faire ou quelques conseils dans quelle direction aller avec cela?
Merci