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...

Другие вопросы по тегам