我可以简化我的代码吗?
我名单很长。我正在使用一些API,每个方法调用最多接受25条记录。
我写了简单的分页
List<long> items = new List<long>(); // this will contain 100+ records
int itemsCnt = items.Count();
int pagesCnt = (itemsCnt + (itemsCnt % 25)) / 25; // calculating total pages
int page = 0;
while (page < pagesCnt)
{
List<long> itemsSinglePageList = items.GetRange(page, 25);
ProcessPageOfRecords(itemsSinglePageList);
page++;
}
我想知道是否可以简化一下。
int pagesCnt = (itemsCnt + (itemsCnt % 25)) / 25; // calculating total pages
这不是您想要的。模数是余数,这意味着它用于减法,而不是加法。以下两个是正确的,但我更喜欢后者:
int pagesCnt = ((itemsCnt - (itemsCnt % 25)) / 25) + 1;
int pagesCnt = Math.Ceiling ( (double)itemsCnt / 25 ) ; //Rounding up is basically what you want here.
但是,为了进行深入的审查,我建议将此内容发布到https://codereview.stackexchange.com/,因为它们更适合这些类型的答案。
编辑以解释为什么模数用法在您的情况下是错误的:
假设有26个项目。让我们使用您的公式:
(itemsCnt + (itemsCnt % 25)) / 25
(26 + (26 % 25)) / 25
(26 + (1)) / 25
(27 ) / 25
//Not casted as double, so it's an int division
1
以我的示例为例:
Math.Ceiling ( (double)itemsCnt / 25 )
Math.Ceiling ( (double)26 / 25 )
Math.Ceiling ( 1.04 )
2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句