Упорядочивание и фильтрация в коллекции в памяти, загруженной из базы данных, против запросов к базе данных - PullRequest
0 голосов
/ 02 марта 2019

Я не уверен, какой подход рекомендуется для того, с чем я сталкиваюсь прямо сейчас.В основном, когда я загружаю свою страницу Razor, я возвращаю список пользователей из базы данных, которые я позже хочу заказать по цене или отфильтровать по определенным параметрам и т. Д. В настоящее время данные загружаются из базы данных в List<MyEntity>.

Я пытаюсь выяснить, какой подход лучше и почему:

  1. Выполнить запрос к базе данных для каждой сортировки / фильтра, который кажется большим потенциаломзапросы к базе данных.

  2. Выполните сортировку и фильтрацию списка, который я изначально заполнил при получении модели.например.создайте метод, который принимает List<MyEntity> и упорядочивает его следующим образом:

    public List<MyEntity> OrderMyEntitiesByPriceAsc(List<PetGuardian> 
    toOrder)
    {
        return toOrder.OrderBy(g => g.Price).ToList();
    }
    

и при выборе параметров упорядочения и отправке формы этот метод выполняется.

В моей модели страницы Razor я загружаю все свои объекты следующим образом:

Модель страницы Razor:

    public async Task OnGet()
    {
        MyEntities = await _myEntityRepository.GetAllAsync();
    }

Хранилище:

    public IQueryable<T> GetAll()
    {
        return _dbContext.Set<T>().AsQueryable();
    }

    public async Task<List<T>> GetAllAsync()
    {
        return await GetAll().ToListAsync();
    }

Опция2 кажется, что это избавит базу данных от лишних запросов, но я не уверен, является ли асинхронная реализация упорядочения правильной и хорошей практикой.Оба подхода сделают свою работу, мне просто интересно, что бы вы использовали и почему.

public Task<List<MyEntity>> OrderMyEntitiesPriceAsc(List<MyEntity> toSort)
{
    return toSort.AsQueryable().OrderBy(g => g.Price).ToListAsync();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...