Столы:
[![1]](https://i.stack.imgur.com/SfeI0.png)
Модель запроса:
...public string Keys { get; set; }
public int[] Cities { get; set; }
public int[] Sectors { get; set; }...
Контроллер:
public List<PostJob> SearchQuery(SearchFilterModel model)
{
var query = _postJobService.AsQueryable();
if (!string.IsNullOrWhiteSpace(model.Keys))
{
var keyWords = model.Keys.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);
query = query.Where(i => keyWords.Any(j => i.Title.Contains(j) || i.SeachTags.Contains(j)));
}
if (model.Cities.Length > 0)
{
query = query.Where(i => i.JobLocations.Any(j => model.Cities.Contains(j.CityId)));
}
if (model.Sectors.Length > 0)
{
query = query.Where(i => i.JobFeatures.Any(j => j.CategoryId == Startup.AppSettingsFeatures.Sector && model.Sectors.Contains(j.FeatureId)));
}
return query.ToList();
}
Так что это признает связь между двумя таблицами. У меня есть много переменных для фильтрации и поиска по ключам в информации, теги поиска (может быть, информация). Таблица столбцов может быть очень большой таблицей в будущем, поэтому мне нужен лучший подход для поиска и фильтрации запросов. Я исследовал много документов и закодировал этот код.
Как улучшить мой код для больших таблиц?
что лучше?
query1 = query.Where(i => i.JobLocations.Any(j => model.Cities.Contains(j.CityId)));
query2 = query.Where(i => model.Cities.Any(j => i.JobLocations.Select(k => k.CityId).Contains(j)));
что лучше всего искать в массиве строк запроса массива строк (например, как поиск / содержит ключевые слова [] в заголовке, поисковом теге, информации)