Neste post, veremos como podemos iniciar uma lista a partir de um inúmeros valores específicos.
Antes de começar, vamos dar uma olhada na minha lista e de onde partiremos o nosso raciocínio: 
Mas suponha, eu preciso começar o loop do valor = 4 Então, minha lista deveria ser assim:

Para alcançar o modelo acima, precisamos usar as propriedades da lista, ou seja, SkipWhile e TakeWhile
int iStartValue = 4;
List<int> lstValue = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };
var Output = lstValue.SkipWhile(x => x != iStartValue)
.Concat(lstValue.TakeWhile(x => x != iStartValue))
.ToList();

Vejamos algumas ideias sobre Lista e suas propriedades como Skip, Skipwhile, Take, TakeWhile.
Exemplo:
List<int> lstValue = new List<int>() {1, 2, 3, 4, 5, 6, 7};
Nas listas, temos duas propriedades principais: Skip, SkipWhile
Skip
O método Skip() “ignora” os primeiros n elementos na sequência e retorna uma nova sequência contendo os elementos restantes após os primeiros n elementos.

SkipWhile
SkipWhile() “ignora” os elementos iniciais de uma sequência que atende aos critérios especificados pelo predicado e retorna uma nova sequência contendo o primeiro elemento que não atende os critérios, bem como quaisquer elementos que se seguem.

Take
O método Take() extrai os primeiros n elementos (onde n é um parâmetro para o método) desde o início da sequência de destino e retorna uma nova sequência contendo apenas os elementos.

TakeWhile
TakeWhile() se comporta de forma semelhante ao método Take(), exceto que, em vez de tomar os primeiros n elementos de uma sequência, ele “leva” todos os elementos iniciais de uma sequência que atende aos critérios especificados pelo predicado e para no primeiro elemento que não atende aos critérios. Em seguida, ele retorna uma nova sequência contendo todos os elementos “tomados”.

Um grande abraço a todos.
