我无法找到一种方法来完成这项工作并希望有人有一个想法。一个简化的例子是有一个整数列表1-100,我想分组每3行所以结果将是1,2,3在第一组然后4,5,6在下一组等我知道如何得到每一条记录,但我需要的是所有记录,所以我可以使用first,last,sum,max等聚合它们。
谢谢!
答案 0 :(得分:33)
此示例适用于查询非数字集合。它将索引投影到要分组的对象中,然后在分组期间再次将其删除。
var studentQuery2 = students
.Select((student, index) => new {student, index})
.GroupBy(g => g.index / 3, i => i.student);
答案 1 :(得分:24)
var q = Enumerable.Range(0, 100).GroupBy(x => x/3);
我错过了什么吗?
答案 2 :(得分:2)
如何更简单的方法:
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3);
<强>更新强>
如果您使用组项的Key
值,则需要将可枚举组转换为列表。否则,每次访问时都会得到不同的Key
。
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3).ToList();