【发布时间】:2017-04-08 00:14:17
【问题描述】:
我找不到实现这项工作的方法,希望有人有想法。一个简化的例子是有一个说整数 1-100 的列表,我想每 3 行分组,所以结果将是第一组中的 1,2,3,然后是下一组中的 4,5,6,等等。我知道如何获取每第 n 条记录,但我需要的是所有记录,以便我可以使用 first、last、sum、max 等聚合它们。
谢谢!
【问题讨论】:
我找不到实现这项工作的方法,希望有人有想法。一个简化的例子是有一个说整数 1-100 的列表,我想每 3 行分组,所以结果将是第一组中的 1,2,3,然后是下一组中的 4,5,6,等等。我知道如何获取每第 n 条记录,但我需要的是所有记录,以便我可以使用 first、last、sum、max 等聚合它们。
谢谢!
【问题讨论】:
这个例子应该适用于查询非数字集合。它将索引投影到要分组的对象中,然后在分组期间再次将其删除。
var studentQuery2 = students
.Select((student, index) => new {student, index})
.GroupBy(g => g.index / 3, i => i.student);
【讨论】:
var q = Enumerable.Range(0, 100).GroupBy(x => x/3);
我错过了什么吗?
【讨论】:
如何更简单的方法:
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3);
更新:
如果您使用组项的Key 值,则需要将组可枚举转换为列表。否则每次访问都会得到不同的Key。
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3).ToList();
【讨论】: