Divida a coleção de C # em partes iguais, mantendo a classificação

Estou tentando dividir uma coleção em várias coleções, mantendo uma classificação que tenho na coleção. Eu tentei usar o seguinte método de extensão, mas ele os quebra incorretamente. Basicamente, se eu olhar os itens da coleção, o pedido deve ser o mesmo quando comparado às coleções desfeitas reunidas. Aqui está o código que estou usando que não funciona:

public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
        {
            int i = 0;
            var splits = from name in list
                         group name by i++ % parts into part
                         select part.AsEnumerable();
            return splits;
        }
int partes = número de subenumeráveis

questionAnswers(8)

yourAnswerToTheQuestion