Use*_*987 3 c# for-loop list c#-4.0
我想编写一个for循环,它将遍历现有列表,并在每次迭代时从该列表中取出20个项目.
所以像这样:
我写过这样的话:
var allResponses= new List<string>();
for (int i = 0; i < filteredList.Count(); i++)
{
allResponses.Add(GetResponse(filteredList.Take(20).ToList()));
}
Run Code Online (Sandbox Code Playgroud)
假设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()));
}
Run Code Online (Sandbox Code Playgroud)
"加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()));
}
Run Code Online (Sandbox Code Playgroud)