Czy istnieje zalecany sposób wyszukiwania każdego z wielu terminów przy użyciu StartsWith, gdy terminy nie są znane podczas kompilacji?RavenDB szukaj dla każdego z wielu terminów przy użyciu StartsWith
mogę sobie wyobrazić coś takiego:
var searchTerms = "John Doe".Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var query = session.Query<Person, PersonIndex>()
.Where(x => x.FirstName.StartsWithAnyOf(searchTerms) ||
x.LastName.StartsWithAnyOf(searchTerms));
Zapytanie byłby odpowiednikiem:
var query = session.Query<Person, PersonIndex>()
.Where(x => x.FirstName.Starts(searchTerms[0]) ||
x.LastName.StartsWith(searchTerms[0]) ||
x.FirstName.Starts(searchTerms[1]) ||
x.LastName.StartsWith(searchTerms[1]));
Czy odpowiedź zbudować kwerendę LINQ w czasie wykonywania (PredicateBuilder lub podobny)?
nie sądzę '.Search' zrobi to, co chcę, chcę zwrócić _John Doe_, gdy szukany ciąg to _Jo_, _Do_, _Jo Doe_, _Jo Do_. Nie sądzę, że '.Search' zwróci _John Doe_, chyba że dopasuję jedno z analizowanych terminów? – kendaleiv
Dla wyjaśnienia mam na myśli, kiedy szukany ciąg jest ** dowolnym z **. – kendaleiv