LINQ - Как выполнить частичный поиск по нескольким критериям, используя NHibernate.LINQ - PullRequest
1 голос
/ 20 апреля 2011

У меня есть страница поиска, на которой пользователь может ввести несколько городов, разделенных запятой, и нам нужно получить все объекты недвижимости, в которых указан город, указанный в критериях поиска.Например, пользователь введет что-то вроде этого

towns = Dallas, Austin

Мой запрос работает нормально, если пользователь вводит полное название города

var cityList = newList {"Dallas", "Austin"};var properties = Reporsitory.AsQueryable .Where (x => cityList.Contains (x.City)) .ToList ();

Однако, если я просто введу Dal, Aus это не будет работать.Как я могу заставить эти частичные поиски работать.Является ли Dynamic LINQ единственным ответом?Спасибо!

Ответы [ 3 ]

0 голосов
/ 20 апреля 2011

Я не знаю конкретно для nHibernate, но Linq to SQL поддерживает это:

.Where(x=> x.StartsWith("Dal"))
0 голосов
/ 20 апреля 2011
var properties = Reporsitory.AsQueryable().Where(x => cityList.Count(c => x.StartsWith(c)) != 0);

Или заменить StartWith на Содержит ...

0 голосов
/ 20 апреля 2011

попробуйте

var cityList = new List{"Dallas", "Austin"}; 
var properties = Reporsitory.AsQueryable 
.Where(x=> cityList.Contains(y => x.City.Contains(y)).ToList();

попробуйте поискать внутри строки, я надеюсь, что это работает

...