Entitiy Framework Как улучшить выполнение запросов к многим таблицам отношений? - PullRequest
0 голосов
/ 11 сентября 2018

Столы: [1]

Модель запроса:

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

что лучше всего искать в массиве строк запроса массива строк (например, как поиск / содержит ключевые слова [] в заголовке, поисковом теге, информации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...