如何每n个项迭代一个循环

Iva*_*ono 3 c# loops

我有一个项目列表,我需要循环它,以便首先收集每个n(例如3)项目,然后在第n项目处立即处理.

我正在做以下事情:

List<MyObject> smallList = new List<MyObject>();

for (int i = 0; i < largeList.Count; i++)
{
    smallList.Add(largeList[i]);

    if (i % 3 == 0 || i >= largeList.Count - 3)
    {
        //Do somehting with those n items...
    }

    smallList.Clear();
 }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

kag*_*los 8

您也可以使用LINQ执行此操作:

var largeList = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
for (int i = 0; i < largeList.Count; i += 3)
{
    var items = largeList.Skip(i).Take(3).ToList();
    // do stuff with your 3 (or less items)
}
Run Code Online (Sandbox Code Playgroud)

  • 你应该从`i = 0`开始,否则你会错过前三个. (2认同)