Каков наиболее элегантный способ (в C #) определить, сколько страниц данных вы указали:
А.) Всего записей б.) Записей на странице.
В настоящее время то, что у меня есть, работает, но он использует if / else, чтобы проверить, превышает ли значение общее (1 страница) или более, а затем необходимо усечь десятичный разряд, выполнить операцию модификации и добавить еще 1, если был конечная десятичная дробь.
Я уверен, что есть математическая функция, которая делает многое за меня и не такая уж уродливая.
Спасибо.
4 ответа
int pages = ((totalRecords-1) / recordsPerPage)+1
Предполагая, что totalRecords
и recordsPerPage
- это целые числа. Если они двойные (почему они двойные?), Вам нужно сначала преобразовать их в целые или длинные, потому что это зависит от целочисленного деления.
Оберните его в функцию, чтобы вам не приходилось повторять вычисления повсюду в вашей кодовой базе. Просто настройте его один раз в такой функции:
public int countPages(int totalRecords, int recordsPerPage) {
return ((totalRecords-1) / recordsPerPage)+1;
}
Если totalRecords
может быть нулевым, вы можете просто добавить для него особый случай в функцию:
public int countPages(int totalRecords, int recordsPerPage) {
if (totalRecords == 0) { return 1; }
return ((totalRecords-1) / recordsPerPage)+1;
}
int totalPages = (int)Math.Ceiling((double)totalRecords/recordsPerPage);
Проблема с этим подходом:
public int countPages(int totalRecords, int recordsPerPage) {
if (totalRecords == 0) { return 1; } return ((totalRecords-1) / recordsPerPage)+1;
}
Если totalRecords равно 1, делится на 0. Нужен дополнительный оператор if.
Вот мой вариант. .NET имеет тенденцию использовать -1, когда при возврате int невозможно получить результат. Так что используйте это соглашение повторно.
public int countPages(int totalRecords, int recordsPerPage)
{
//insert as many paranthesies and tabs as makes you happy.
if(totalRecords == 0) return -1;
return (totalRecords % recordsPerPage) == 0?
(totalRecords/recordsPerPage)
: (totalRecords/recordsPerPage) + 1;
}
int pages = 1 + (totalRecords + 1) / (recordsPerPage + 1)
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.