寻找一种n用LINQ 分组元素集的方法.
即:
{1,2,3,4,5,6,7,8,9}:
{{1,2},{3,4},{5,6},{7,8},{9}}{{1,2,3},{4,5,6},{7,8,9}}{{1,2,3,4},{5,6,7,8},{9}}我现在只能想到做这样的事情的方法是使用匿名类型生成组索引,然后按该索引进行分组.如果可能的话,我正在寻找更清洁的解决方案.
例:
int groupSize = n;
int groupCount = 0;
int groupNum = 0;
IEnumerable<T> items;
IEnumerable<IGrouping<int,T>> groups = items
.Select(i => new
{
Index = ((groupCount++) % groupSize == 0) ? groupNum++ : groupNum,
Item = i
})
.GroupBy(c => c.Index, d => d.Item);
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想避免这种令人讨厌的事情.
var values = new []{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
groups = values.Select((v, i) => new { index = i, value = v })
.GroupBy(k => k.index / n, e => e.value);
Run Code Online (Sandbox Code Playgroud)