LINQ - Как выполнить частичный поиск по нескольким критериям, используя NHibernate.LINQ
У меня есть страница поиска, где пользователь может ввести несколько городов, разделенных запятой, и нам нужно получить все объекты недвижимости, где указан город, указанный в критериях поиска. Например, пользователь введет что-то вроде этого
города = Даллас, Остин
У меня нормально работает запрос, если пользователь вводит полное название города
var cityList = new List{"Даллас", "Остин"}; var properties = Reporsitory.AsQueryable .Where(x=> cityList.Contains(x.City)) .ToList();
Однако если я просто введу Dal, Aus это не сработает. Как я могу заставить эти частичные поиски работать. Является ли Dynamic LINQ единственным ответом? Спасибо!
3 ответа
Попробуй это
var cityList = new List{"Dallas", "Austin"};
var properties = Reporsitory.AsQueryable
.Where(x=> cityList.Contains(y => x.City.Contains(y)).ToList();
попробуйте поискать внутри строки, я надеюсь, что это работает
Я не знаю конкретно для nHibernate, но Linq to SQL поддерживает это:
.Where(x=> x.StartsWith("Dal"))
var properties = Reporsitory.AsQueryable().Where(x => cityList.Count(c => x.StartsWith(c)) != 0);
Или заменить StartWith на Contains...