TakeWhile, mas pegue o elemento que parou também

Eu gostaria de usar o LINQTakeWhile função no LINQ para objetos. No entanto, também preciso conhecer o primeiro elemento que "quebrou" a função, ou seja, o primeiro elemento em que a condição não era verdadeira.

Existe uma única função para obter todos os objetos que não correspondem, além do primeiro que faz?

Por exemplo, dado o conjunto{1, 2, 3, 4, 5, 6, 7, 8},

mySet.MagicTakeWhile(x => x != 5);

=> {1, 2, 3, 4, 5}

questionAnswers(3)

yourAnswerToTheQuestion