Dla strony internetowej robię używamy LINQ do jednostek. Obciążono mnie dodaniem funkcji wyszukiwania do witryny. Próbuję znaleźć najbardziej elegancki sposób wyszukiwania wielu słów kluczowych (wprowadzonych przez użytkownika) w jednym polu w bazie danych. Pozwól mi podać przykład.LINQ do encji Wyszukiwanie właściwości tekstu dla wielu słów kluczowych
kolumn tabeli:
Name, Description
przykład rzędu:
"Cookie monster", "Fluffy, likes cookies and blue"
wyszukiwania użytkownika (separatora nie ma znaczenia):
"blue fluffy"
Obecnie m użyciu następujących:
public List<SesameCharacters> SearchByKeywords(string keywords)
{
List<SesameCharacters> output = new List<SesameCharacters>();
string[] k = keywords.ToLower().Split(' ');
using (SesameStreet_Entities entities = new SesameStreet_Entities())
{
IQueryable<SesameCharacters> filter = entities.SesameCharacters;
foreach (string keyword in k)
filter = ForceFilter(filter, keyword);
output = filter.ToList();
}
return output;
}
private IQueryable<SesameCharacters> ForceFilter(IQueryable<SesameCharacters> filter, string keyword)
{
return filter.Where(p => p.Description.ToLower().Contains(keyword));
}
To obecnie działa zgodnie z oczekiwaniami, ale wyobrażam sobie, że to nie jest najlepsze rozwiązanie tego problemu. Czy brakuje mi czegoś jaskrawo oczywistego?
UWAGA: To jest dopasowanie AND
.
dziwne, odpowiedź była tutaj, głosowałem go, a następnie w dół, ponieważ myślałem, że to było złe, po czym poszedłem zagłosować, ponieważ było to słuszne, a teraz zniknęło. – jfar
Tak, była odpowiedź od casperOne, ale ktoś musiał ją zdementować. Zasugerował użycie zapisanego proca, który jest tym, na czym się teraz skłaniam. –
Jestem w tej samej sytuacji ... Czy znalazłeś rozwiązanie z LinqToEntities, czy też skończyłeś z użyciem procedury przechowywanej? – Kjensen