c# – 每次跳过20个项目的循环
发布时间:2020-12-15 23:38:43 所属栏目:百科 来源:网络整理
导读:我想编写一个for循环,它将遍历现有列表,并在每次迭代时从该列表中取出20个项目. 所以像这样: 如果过滤列表包含让我们说68项…… 前3个循环每个需要20次,然后在最后的第4次迭代中,它将占用列表中的8个项目中的其余项目… 我写过这样的话: var allResponses=
我想编写一个for循环,它将遍历现有列表,并在每次迭代时从该列表中取出20个项目.
所以像这样: >如果过滤列表包含让我们说68项…… 我写过这样的话: var allResponses= new List<string>(); for (int i = 0; i < filteredList.Count(); i++) { allResponses.Add(GetResponse(filteredList.Take(20).ToList())); } 假设filteredList是包含68个项目的列表.我认为这不是一种方法,因为我不想循环到集合大小,但不是68次,它应该是4次,每次我从列表中取出20项……如何我可以这样做吗? 解决方法
你非常接近 – 只需添加一个对Skip的调用,并将Count除以20并进行四舍五入:
var allResponses= new List<string>(); for (int i = 0; i < (filteredList.Count+19) / 20; i++) { allResponses.Add(GetResponse(filteredList.Skip(i*20).Take(20).ToList())); } “加19,除以20”技巧提供了一种惯用的方式来取整数除法的“上限”,而不是“地板”. 编辑:更好(感谢Thomas Ayoub) var allResponses= new List<string>(); for (int i = 0 ; i < filteredList.Count ; i = i + 20) { allResponses.Add(GetResponse(filteredList.Skip(i).Take(20).ToList())); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |