IList分组然后创建新的listarray

时间:2017-05-20 08:14:17

标签: c# list

有一个IList<>有12个元素,

现在,我将ilist围绕一个圆圈,端到端,

然后将每个元素的这个列表分组一组,但下一组的开头是上一组的结尾,如下所示:

[0] [1] [2],[2] [3] [4],[4] [5] [6],...... [10] [11] [0]。

我怎样才能成功,c#会更好

1 个答案:

答案 0 :(得分:0)

试试这段代码:

static void Main(string[] args)
{
    var list = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

    foreach (var b in Batch(list))
    {
        foreach (var n in b)
            Console.Write(n + " ");
        Console.WriteLine();
    }
}

static IEnumerable<IList<int>> Batch(IList<int> list)
{
    for (int i = 0; i < list.Count; i += 2)
    {
        var batch = new List<int>();

        for (int j = i; j < i + 3; j++)
            if (j < list.Count)
                batch.Add(list[j]);

        int count = batch.Count;

        for (int j = 0; j < 3 - count; j++)
            batch.Add(list[j]);

        yield return batch;
    }
}