可能重复:
使用 LINQ 将列表拆分为子列表
我正在寻找某种方法来使用 LINQ 将可枚举拆分为三个可枚举,以便输入中的每个连续项目都位于序列中的下一个子列表中。所以输入
{"a", "b", "c", "d", "e", "f", "g", "h"}
会导致
{"a", "d", "g"}, {"b", "e", "h"}, {"c", "f"}
我已经这样做了,但我确信必须有一种方法可以使用 LINQ 更优雅地表达这一点。
var input = new List<string> {"a", "b", "c", "d", "e", "f", "g", "h"};
var list = new List<string>[3];
for (int i = 0; i < list.Length; i++)
list[i] = new List<string>();
int column = 0;
foreach (string letter in input)
{
list[column++].Add(letter);
if (column > 2) column = 0;
}