Поиск по одному и нескольким ключевым словам как из одного текстового поля
С помощью приведенного выше кода я могу получить подробную информацию по нескольким ключевым словам, но в то же время я хочу получить записи и по одному ключевому слову.
Пожалуйста, кто-нибудь мне поможет, заранее спасибо
Что я уже пробовал:
var db = new MatriModel(); string s = txtKeyWord.Text; string[] words = s.Split(','); int count = words.Length; if (count <= 5)) { SerachByKeyWordPanel.Visible = true; var KeyWord = db.tblProfiles.Where(x => words.Contains(x.tblCaste.Caste) && words.Contains(x.tblCountry.Country) && words.Contains(x.City) && words.Contains(x.tblOccupation.Occupation) && words.Contains(x.tblMotherTongue.MotherTongue)).Select(x => new { ProfileID = x.ProfileID, ProfileFor = x.tblProfileFor.ProfileFor, }.ToList();
Philippe Mori
Если вы хотите искать конкретные вещи, то было бы лучше отобразить 5 полей на веб-странице и отфильтровать данные соответствующим образом в зависимости от того, какое поле было заполнено.
Вы не ясно объяснили проблему с вашим кодом... Возможно, при первом чтении не всем будет очевидно, что ваш код не сможет найти элемент, как только в словах пропадет одна информация (каста, страна, город...).
Member 12115746
Поиск по ключевым словам,таким как город,страна, Каста с одним текстовым полем работает с моим приведенным выше кодом, но с тем же кодом, если я ищу с одним ключевым словом ex: city, то он показывает мне "нет записи найдено".
Нужно получить записи с несколькими ключевыми словами поиска, а также одно ключевое слово
Philippe Mori
Как я уже сказал, если одна информация отсутствует, вы не найдете запись, потому что вы фильтруете по всем полям.
Хотя если пользователь введет одну-единственную информацию, то использовать ее будет тривиально ||
вместо &&
чтобы он мог соответствовать любому полю, он не будет хорошо работать, если пользователь хочет ввести несколько сведений, но не все.
Возможно, вы сможете подсчитать количество совпадений, но тогда запрос, вероятно, станет слишком сложным, и он может потерпеть неудачу или быть очень медленным.
Таким образом, как я уже сказал, лучший вариант-иметь одно поле в вашем пользовательском интерфейсе для каждого столбца в вашей базе данных. Таким образом, вы можете легко отфильтровать соответствующие столбцы.
Ну, если данные действительно малы (скажем, не более 100 записей максимум), вы можете выполнить фильтрацию в памяти (и не ограничиваться сложностью SQL-запроса).