如何使用Linq对每N行进行分组

我无法找到一种方法来完成这项工作并希望有人有一个想法。 一个简化的例子是有一个整数列表1-100,我想分组每3行所以结果将是1,2,3在第一组然后4,5,6在下一组等我知道如何得到每个第n条记录,但我需要的是所有记录,所以我可以使用first,last,sum,max等聚合它们。

谢谢!

var q = Enumerable.Range(0, 100).GroupBy(x => x/3); 

我错过了什么吗?

此示例应用于查询非数字集合。 它将索引投影到要分组的对象中,然后在分组期间再次将其删除。

 var studentQuery2 = students .Select((student, index) => new {student, index}) .GroupBy(g => g.index / 3, i => i.student); 

如何更简单的方法:

 var index = 0; var grpOf3s = students.GroupBy(x => index++ / 3); 

更新:如果您使用组项的Key ,则需要将可枚举组转换为列表。 否则,每次访问时都会获得不同的Key

 var index = 0; var grpOf3s = students.GroupBy(x => index++ / 3).ToList();