LINQ:从集合中获取一系列元素

Bob*_*Bob 3 .net c# linq

我有一个对象集合,需要接受100个对象的批处理,然后对它们进行一些处理,直到没有任何对象需要处理.

而不是循环每个项目并抓住100个元素,然后下一百个等有一个更好的方式与linq做它?

非常感谢

And*_*rey 11

static void test(IEnumerable<object> objects)
{
    while (objects.Any())
    {
        foreach (object o in objects.Take(100))
        {
        }
        objects = objects.Skip(100); 
    }
}
Run Code Online (Sandbox Code Playgroud)

:)


Luk*_*keH 11

int batchSize = 100;
var batched = yourCollection.Select((x, i) => new { Val = x, Idx = i })
                            .GroupBy(x => x.Idx / batchSize,
                                     (k, g) => g.Select(x => x.Val));

// and then to demonstrate...
foreach (var batch in batched)
{
    Console.WriteLine("Processing batch...");

    foreach (var item in batch)
    {
        Console.WriteLine("Processing item: " + item);
    }
}
Run Code Online (Sandbox Code Playgroud)