#c# #api #pagination
#c# #API #Разбивка на страницы
Вопрос:
Я работаю над API на C #. В одном из наших отчетов нам нужно отправить клиенту огромные данные. Я много искал в библиотеках, чтобы обеспечить разбивку на страницы, и, наконец, пришла идея написать функцию самостоятельно. Я написал этот код, и он работает в соответствии с моими потребностями:
public class PagedList<T>
{
public PagedList() { Data = new List<T>(); }
public List<T> Data { get; set; }
public List<T> ToPagedList(List<T> req, int PageNumber, int PageSize)
{
var result = new List<T>();
var count = req.Count();
if (PageNumber * PageSize > count amp;amp; count - PageNumber * PageSize > PageSize)
{
PageNumber = count / PageSize;
}
for (int i = PageSize * (PageNumber - 1); i <= PageSize * PageNumber - 1 amp;amp; i < count; i )
result.Add(req[i]);
return resu<
}
}
Метод будет использоваться как следующий пример:
result = new MyClass.PagedList<TransactionHistory>().ToPagedList(result, PageNumber, PageSize);
Ответ, который я получил, слишком прост, и я чувствую, что что-то не так. Мог ли я ошибиться в этом выборе?
Комментарии:
1. интересно, почему не выполняется разбивка на страницы в базе данных? позвольте базе данных сделать это, и это также сэкономит вычислительную мощность, а также будет быстрым.
2. Вы правы. У меня такое же мнение. Но теперь мне нужно написать уровень API, а уровень базы данных был написан раньше.
3. но все же это не причина для этого. обратитесь к своей команде уровня базы данных и позвольте им запрограммировать этот материал, потому что в конце ваш api будет работать медленно, если вы извлекаете все данные из базы данных, а затем сортируете их. допустим, вы извлекаете 1 миллион единиц данных из базы данных, а затем сортируете их и используете из них всего 10 строк. это не очень хорошо.
4. Кроме того, вам следует обратить внимание на нумерацию страниц набора ключей, она имеет тенденцию работать намного лучше, чем нумерация строк