For a list like this:
List<int> list = new List<int>{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
You can use this code:
List<int> subList1 = list.Skip(0).Where((x, i) => i % 5 == 0).ToList();
List<int> subList2 = list.Skip(1).Where((x, i) => i % 5 == 0).ToList();
List<int> subList3 = list.Skip(2).Where((x, i) => i % 5 == 0).ToList();
List<int> subList4 = list.Skip(3).Where((x, i) => i % 5 == 0).ToList();
List<int> subList5 = list.Skip(4).Where((x, i) => i % 5 == 0).ToList();
Or do it in a for loop:
List<int>[] subLists = new List<int>[5];
for (int i = 0; i < subLists.Length; i++)
{
subLists[i] = list.Skip(i).Where((x, j) => j % 5 == 0).ToList();
}
The Skip(i)
is for selecting the first index and the Where((x, j) => j % 5 == 0)
is for taking every 5th element by checking if the index modulo 5 is zero.