LINQ wyszukiwanie zaawan

LINQ wyszukiwanie zaawan
A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Cześć, podpowiedzcie jak mogę ulepszyć moją wyszukiwarkę.

Powiedzmy, że mam listę samochodów.

Marka | Model.

Stworzyłem zapytanie LINQ:

Kopiuj
var cars = new List<Car>();

cars = (from x in context.Cars
where (string.IsNullOrEmpty(input) || x.marka.Contains(input) || x.model.Contain(input)
select new Car() { nazwa = x.marka + ", " +  x.model }).ToList();

W tym przypadku, mogę wpisać Opel, wyszuka mi wszystkie Ople. Mogę wpisać, Astra, wyszuka wszystkie Astry.

Ale chcę zrobić tak, że user do inputa wpisuje Opel, Astra i wyszuka mi Opla Astrę.

W tej chwili ta fraza jest zbyt długa i nie pasuje / nie zawiera się ani w x.marka, ani x.model.

Jakoś nie mam na to pomysłu :/

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Robisz to dla zabawy czy profesjonalnie?

Jeśli to drugie, najlepszym wyjściem będzie zastosowanie silnika obsługującego wyszukiwanie pełnotekstowe (ElasticSearch czy nawet MySQL'owy full text search).

A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Dla zabawy.

Zrobiłem tak:

Kopiuj
cars = (from x in context.Cars
where (string.IsNullOrEmpty(input) || (x.marka + ", " +  x.model).Contain(input)
select new Car() { nazwa = x.marka + ", " +  x.model }).ToList();

Działa, tylko nie wiem, czy to jest optymalne rozwiązanie.

ElasticSearch - poczytam :)

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5227
1

Pomiędzy zabawą czy profesjonalnie są jeszcze Expression Trees i dynamicznie budowanie predykatów do LINQ.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.