Я использовал следующий код для извлечения содержимого канала JSON, и, как вы видите, я использовал методы подкачки и такие методы Skip
и Take
, как этот:
[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 и после получения всего содержимого фильтрует его, используя Skip
и Take
методы , я ищу способ применения Skip
и Take
методов с моим HttpClient
, чтобы он только извлекал необходимые записи для каждой страницы. Является ли это возможным? Если да, то как?