尋找一種將LINQ組合爲n
元素的方法。LINQ數字分組
即:
{1,2,3,4,5,6,7,8,9}
:
- 分組通過2:
{{1,2},{3,4},{5,6},{7,8},{9}}
- 分組通過3:
{{1,2,3},{4,5,6},{7,8,9}}
- 分組通過4:
{{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);
我想避免的事情這個討厭如果可能的話。
如果有更好的方法,這將是非常棒的,但我不認爲這是真的。 – 2010-06-04 20:07:55
這稱爲分區。 – SLaks 2010-06-04 20:08:50
我的意思是,我總是可以將上面的內容寫成擴展函數,我只是不知道延遲執行如何處理類似的事情。我更喜歡LINQ'y儘可能的東西:) – Aren 2010-06-04 20:10:07