Улучшение производительности с помощью методов Linq - PullRequest
0 голосов
/ 28 апреля 2018

Я использовал следующий код для извлечения содержимого фида JSON, и, как вы видите, я использовал методы пейджинга и методы Пропуск и Взятие, подобные этому. Мой пейджинг работает нормально, однако я не вижу никакого улучшения производительности, и я знаю, что это потому, что каждый раз, когда я запрашиваю новую страницу, он снова и снова вызывает API и после получения всего содержимого фильтрует его, используя Skip и Take method, Я ищу способ применения Skip и Take методов с моим HttpClient, чтобы он получал только необходимые записи для каждой страницы. Возможно ли это? Если да, то как?

[HttpGet("[action]")]
public async Task<myPaginatedReturnedData> MyMethod(int page)
{
    int perPage = 10;
    int start = (page - 1) * perPage;

    using (HttpClient client = new HttpClient())
    {
        client.BaseAddress = new Uri("externalAPI");
        MediaTypeWithQualityHeaderValue contentType =
            new MediaTypeWithQualityHeaderValue("application/json");
        client.DefaultRequestHeaders.Accept.Add(contentType);
        HttpResponseMessage response = await client.GetAsync(client.BaseAddress);
        string content = await response.Content.ReadAsStringAsync();
        IEnumerable<myReturnedData> data = 
               JsonConvert.DeserializeObject<IEnumerable<myReturnedData>>(content);
        myPaginatedReturnedData datasent = new myPaginatedReturnedData
        {
            Count = data.Count(),
            myReturnedData = data.Skip(start).Take(perPage).ToList(),
        };
        return datasent;
    }
}

Если в любом случае этого сделать не удается, я могу получить полную коллекцию из внешнего API и переместить ее в мой интерфейс (Anguar), чтобы отобразить ее там, используя этот способ передачи данных только один раз и затем выполнить постраничную передачу на стороне клиента, что кажется намного лучше, чем заставить внешний API возвращать полный набор данных на мой сервер каждый раз, когда клиент меняет страницу . Является ли это правильным, и пейджинг на стороне сервера для меня бесполезен в этом случае?

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