确定您提供了多少页数据的最优雅方式(在C#中):
a。)总记录 b。)每页记录。
目前我的工作正在进行,但它使用if / else来检查该值是否超过总数(1页)或更多,然后必须截断小数位,执行mod操作并添加1以下有一个尾随的小数。
我确信有一个Math函数可以为我做很多这样的事情并且不那么难看。
感谢。
答案 0 :(得分:21)
int pages = ((totalRecords-1) / recordsPerPage)+1
假设totalRecords
和recordsPerPage
是整数。如果它们是双打的(为什么它们会加倍?)你需要首先将它们转换为int或long,因为这依赖于整数除法。
将其包装在一个函数中,这样您就不必在代码库中的任何地方重复计算。只需在以下函数中设置一次:
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;
}
答案 1 :(得分:0)
int pages = 1 + (totalRecords + 1) / (recordsPerPage + 1)
答案 2 :(得分:0)
这种方法存在问题:
public int countPages(int totalRecords, int recordsPerPage) {
if (totalRecords == 0) { return 1; } return ((totalRecords-1) / recordsPerPage)+1;
}
如果totalRecords为1,则除以0.需要额外的if语句。
这是我的重写。当int返回时没有结果时,.NET倾向于使用-1。所以重用这个约定。
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;
}
答案 3 :(得分:-1)
int totalPages = (int)Math.Ceiling((double)totalRecords/recordsPerPage);